java文件管理和IO入門.ppt_第1頁
java文件管理和IO入門.ppt_第2頁
java文件管理和IO入門.ppt_第3頁
java文件管理和IO入門.ppt_第4頁
java文件管理和IO入門.ppt_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第十二講文件管理和I/O入門,一、概念,Java 文件管理概述 Java 提供了類似“資源管理器”或者 DOS 命令所具有的文件和目錄管理功能。 如:建立文件、建立目錄、刪除文件、顯示目錄中的文件等。 文件:一組相關(guān)信息的集合。 目錄:一種特殊的文件,用以存放文件和其他目錄。 路徑:從盤符經(jīng)過各級(jí)目錄到文件的目錄序列,二、I/O操作分類,分為三類: 1、File類,文件操作類 2、字節(jié)操作類 3、字符操作類,三、File類,File類 File類是IO包中唯一代表磁盤文件本身信息的類,而不是文件中的內(nèi)容。File 類通過簡(jiǎn)易的方法封裝了復(fù)雜的、與平臺(tái)相關(guān)的文件及目錄。 File類定義了一些與平

2、臺(tái)無關(guān)的方法來操縱文件,例如:創(chuàng)建、刪除文件、創(chuàng)建目錄、顯示目錄中文件、重命名文件、判斷文件的讀寫權(quán)限及是否存在、設(shè)置和查詢文件的最近修改時(shí)間等。 Java中的目錄被當(dāng)做一種特殊的文件使用,list方法可以返回目錄中的所有子目錄和文件名。 文件管理步驟: 建立 File 對(duì)象與具體的文件或目錄建立聯(lián)系 調(diào)用 File 類的方法進(jìn)行文件和目錄操作,1、File 類的構(gòu)造方法,1、public File(String path) 創(chuàng)建一個(gè) File 對(duì)象,指向 path 所表示的文件或者目錄。 如:File dir=new File(“d:javaf.txt”); 2、File(File dir,

3、 String name) 創(chuàng)建一個(gè) File 對(duì)象,指向 dir 指定的目錄下的文件名為 name 如:File f1=new File(“d:myfile”,”Hello.java”);注意這里給出的目錄一定要存在,否則創(chuàng)建不成功。 3、File(File path, String name) 創(chuàng)建一個(gè) File 對(duì)象,直接指向 path抽象路徑名下的 name 文件。 說明:創(chuàng)建一個(gè) File對(duì)象, 不會(huì)影響到真實(shí)的文件系統(tǒng),只是在對(duì)象與真實(shí)的文件或目錄之間建立了聯(lián)系。,注意這里的要用轉(zhuǎn)義字符表示,創(chuàng)建時(shí)要保證給出的路徑是存在的否則創(chuàng)建失敗,import java.io.* ; publ

4、ic class IoFileClass public static void main(String args) File f = new File(f:myfile.txt) ; try f.createNewFile() ; catch (Exception e) System.out.println(e) ; ;,例1:在F盤創(chuàng)建一個(gè)名為myfile.txt的文本文件,說明:File類的f.createNewFile()方法,當(dāng)且僅當(dāng)不存在具有此抽象路徑名指定名稱的文件時(shí),創(chuàng)建一個(gè)新的空文件。所以文件操作時(shí)會(huì)進(jìn)行判斷,如果文件已經(jīng)存在,則不會(huì)重新創(chuàng)建。,2、File 類的常用方法,方法

5、 說明 public boolean canRead() 測(cè)試 File 對(duì)象關(guān)聯(lián)文件是否可讀 public boolean canWrite() 測(cè)試 File 對(duì)象關(guān)聯(lián)文件是否可寫 public boolean exists() 測(cè)試 File 對(duì)象關(guān)聯(lián)文件(目錄)是否存在 public boolean isDirectory() 測(cè)試 File 對(duì)象是否對(duì)應(yīng)了磁盤目錄 public boolean isFile() 測(cè)試 File 對(duì)象是否對(duì)應(yīng)了磁盤文件 public String getAbsolutePath() 獲取文件的絕對(duì)路徑ublic String getName() 獲取文

6、件的名字 public String getPath() 獲取文件的路徑 public long lastModified() 返回文件最后被修改的時(shí)間 (與 1970年 1 月 1 日00:00:00 GMT 的時(shí)間差),public boolean 設(shè)置文件(目錄)最后修改時(shí)間 setLastModified(long time) public long length() 返回文件的長(zhǎng)度(bytes) public String list() 如果 File 對(duì)象指向目錄的話, 返回該目錄下所有文件名的列表 public boolean mkdir() 建立一個(gè)目錄 public bool

7、ean mkdirs() 建立一個(gè)目錄。如果該 目錄的父目錄不存在的話,也創(chuàng)建它 public boolean renameTo(File)更改文件名,新文件名為 參數(shù)所指定 public boolean delete() 刪除文件或目錄 public boolean createNewFile()自動(dòng)創(chuàng)建一個(gè)新的空文件(如 throws IOException 果對(duì)象 指向的文件不存在的話 public File listFiles() 返回一個(gè)文件路徑名數(shù)組, 表示文件對(duì)象所指目錄中的文件 或目錄,對(duì)象非目錄時(shí)為 null,例2、通過程序判斷是否存在文件: import java.io.*

8、 ; public class IoFileClass1 public static void main(String args) File f = new File(f:myfile.txt ) ; if(f.exists() System.out.println(文件已存在。) ; else System.out.println(文件不存在) ; ;,例3:如果文件存在則刪除,如果文件不存在則創(chuàng)建,import java.io.* ; public class IoFileClass2 public static void main(String args) throws Exceptio

9、n File f = new File(f:myfile.txt ) ; if(f.exists() f.delete() ; else f.createNewFile() ; ;,例4: import java.io.*; class FileTest public static void main(String args) File f=new File(a.txt); if(f.exists() f.delete(); if(f.mkdirs() System.out.println(文件創(chuàng)建成功!); System.out.println(文件所在路徑是+f.getPath(); Sy

10、stem.out.println(文件所在絕對(duì)路徑是+f.getAbsolutePath(); else System.out.println(文件沒有創(chuàng)建成功!); ,getPath()讀取文件路徑與geAbsolutePath()讀取絕對(duì)路徑的區(qū)別,import java.io.*; import java.util.*; class FileFun public static void main(String args) File f=new File(1.txt); tryf.createNewFile(); catch (Exception e) System.out.println

11、(磁盤錯(cuò)誤!); System.out.println(文件名是: +f.getName(); System.out.println(文件路徑是: +f.getPath(); System.out.println(文件絕對(duì)路徑是: +f.getAbsolutePath(); System.out.println(文件是否存在: +(f.exists()?存在:不存在); System.out.println(文件是否可讀: +(f.canRead()?可讀:不可讀); System.out.println(文件是否是目錄: +(f.isDirectory()?是目錄:不是目錄); System

12、.out.println(文件最后修改時(shí)間:+new Date(f.lastModified(); ,例5:通過文件類的相關(guān)方法打印文件的信息,例6:創(chuàng)建磁盤文件“d:oktry.txt”。 import java.io.*; class CreateFile File path; File file; CreateFile(String dir, String name) throws IOException path = new File(dir); file = new File(path, name); path.mkdirs(); file.createNewFile(); publ

13、ic static void main(String args) throws IOException new CreateFile(d:ok, try.txt); System.out.println(“文件創(chuàng)建成功!.); ,異常轉(zhuǎn)移給JVM,異常轉(zhuǎn)移給調(diào)用它的方法,import java.io.*; class TimeModify File file; TimeModify(String name) file = new File(name); if(!file.exists() System.out.println(name + not found.); System.exit(0)

14、; ,例 7:將磁盤文件“d:oktry.txt” 的最后修改時(shí)間改為前一天。, void ModifyFileTime(long days) long t = file.lastModified(); t += days*24*60*60*1000; file.setLastModified(t); public static void main(String args) TimeModify tm = new TimeModify(d:oktry.txt); tm.ModifyFileTime(-1); System.out.println(“修改完畢!); ,四、目錄,創(chuàng)建目錄 另外兩個(gè)

15、有用的File類的方法是mkdir()和mkdirs()。mkdir()方法創(chuàng)建了一個(gè)目錄,創(chuàng)建成功返回true,創(chuàng)建失敗返回false。創(chuàng)建失敗是指File對(duì)象指定的目錄已經(jīng)存在,或者是因?yàn)檎麄€(gè)路徑不存在而不能創(chuàng)建目錄。創(chuàng)建路徑不存在的目錄,用mkdirs()的方法,它創(chuàng)建目錄以及該目錄所有的父目錄。,import java.io.*; class FileDir public static void main(String args) File f=new File (“java); f.mkdir(); ,在當(dāng)前目錄下建立java子目錄,import java.io.*; class F

16、ileDir public static void main(String args) File f=new File (“zhangjava); f.mkdirs(); ,例8:列出目錄下的所有文件,import java.io.* ; public class IODemo05 public static void main(String args) File f = new File(F:2012java11) ; / 列出此目錄下的全部文件 / 列出之前最好先判斷給出的是不是一個(gè)目錄 if(f.isDirectory() String str = f.list() ; for(int

17、i=0;istr.length;i+) System.out.println(stri) ; else System.out.println(不是目錄。) ; ;,五、數(shù)據(jù)流初步理解,常見的輸入輸出問題鍵盤輸入一些數(shù)據(jù),放到一個(gè)文件中保存 讀取一個(gè)文本文件的內(nèi)容,在屏幕上顯示出來 一個(gè)文件向另一個(gè)文件進(jìn)行數(shù)據(jù)傳輸 生成一個(gè)文件,保存程序的運(yùn)行結(jié)果 數(shù)據(jù)輸入輸出流 Java 所有的輸入輸出問題都基于數(shù)據(jù)流實(shí)現(xiàn),數(shù)據(jù)流有輸入流和輸出流兩大類。,輸入流是用來讀(讀是讀到程序)數(shù)據(jù)的:也就是說從外部讀取數(shù)據(jù)到程序中(例如:從你電腦中的文件中讀入一些數(shù)據(jù)到程序中;從鍵盤輸入一些數(shù)據(jù)到程序中) 輸出流是用

18、來寫數(shù)據(jù)的:也就是說從程序中把數(shù)據(jù)傳到外部(例如:把程序中得到的數(shù)據(jù)放在一個(gè)電腦中指定的文件中; 把程序運(yùn)行的結(jié)果顯示在屏幕上) 注意: 讀是讀入到程序中 寫是寫入到外部(程序外)中,輸入流和輸出流,輸入流和輸出流,向程序流動(dòng)的流為輸入流,程序讀數(shù)據(jù),從程序流出的流為輸出流 ,從程序中把數(shù)據(jù)向外傳,思考,“鍵盤輸入一些數(shù)據(jù)”,需要輸入流還是輸出流? “程序運(yùn)行結(jié)果保存到文件”,需要輸入流還是輸出流? “讀取一個(gè)文本文件”,需要輸入流還是輸出流? “顯示文件內(nèi)容”,需要什么流? 注意:輸入輸出流的劃分是以程序?yàn)橐罁?jù)的,讀寫操作也是以程序?yàn)閷?duì)象的。,輸入流,輸出流,輸入流,輸出流,六、數(shù)據(jù)流的封裝

19、,數(shù)據(jù)流表示了字符或者字節(jié)數(shù)據(jù)的流動(dòng)序列。InputStream面向字節(jié)的輸入流的父類,InputStream 是一個(gè)抽象類。,OutputStream面向字節(jié)的輸出流的父類,OutputStream。,Reader 面向字符的輸入流的父類。,Writer面向字符的輸出流的父類,七、讀寫操作過程,RandomAccessFile 類是 Java 中功能最豐富的文件訪問類,提供了多樣的文件訪問方法,可以對(duì)磁盤文件“隨機(jī)存取”的方式進(jìn)行訪問。 兩種構(gòu)造方法: New RandomAccessFile(f,”rw”)/讀寫方式 RandomAccessFile(r,”r”)/只讀方式,RandomA

20、ccessFile類僅限于操作文件,不能訪問其他的IO設(shè)備,如網(wǎng)絡(luò),內(nèi)存映像等。 不管是讀還是寫都是以文件指示器所在的位置為準(zhǔn)。 程序以讀寫方式打開一個(gè)文件時(shí),文件若不存在則程序會(huì)創(chuàng)建 RandomAccessFile 類中有個(gè)文件指示器,剛打開文件時(shí),文件指示器指向文件的開始位置,通過RandomAccessFile類的對(duì)象讀取文件時(shí),是從指示器指示的當(dāng)前位置開始讀取,當(dāng)讀n個(gè)字節(jié)后,指示器指向n個(gè)字節(jié)后的位置。 RandomAccess類在隨機(jī)(相對(duì)順序而言)讀寫等長(zhǎng)記錄格式的文件時(shí)有很大的優(yōu)勢(shì)。,例9:import java.io.* ; public class TestRandomA

21、ccessFile public static void main(String args) throws Exception RandomAccessFile raf1 = new RandomAccessFile(f:1.txt,rw) ; / 保存姓名(8位字符串)和年齡(int 4): String name = zhangsan ; int age = 20 ; raf1.write(name.getBytes() ; raf1.writeInt(age) ; raf1.close() ; RandomAccessFile raf2 = new RandomAccessFile(f:

22、1.txt,r) ; byte b = new byte8 ; raf2.read(b) ; int age2 = raf2.readInt() ; System.out.println(new String(b)+ - +age2) ; ;,import java.io.*; class RAFile RandomAccessFile rf; RAFile(String file) throws Exception rf = new RandomAccessFile(file,r);/以讀模式打開 void output() throws Exception String s; while(

23、true) s = rf.readLine();/讀取一行 if(s = null) break;/測(cè)試是否讀到尾 System.out.println(s); public static void main(String args) throws Exception RAFile f = new RAFile(f:zhang.txt); f.output(); ,思考:把上例改為RandomAccessFile類的read方法讀取如何實(shí)現(xiàn)?,例10:import java.io.*; class RAFileNew RandomAccessFile rf; RAFileNew(String file) throws Exception rf = new RandomAccessFile(file,r);/以讀模式打開 void output() throws Exception String s; while(true) byte b=new byte300; int l=rf.read(b);/讀取一行 if(l = -1) break;/測(cè)試是否讀到尾 System.out.println(b.toString(); public static void main(String a

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論