第09章輸入輸出流和文件操作(修改2縮減)_第1頁
第09章輸入輸出流和文件操作(修改2縮減)_第2頁
第09章輸入輸出流和文件操作(修改2縮減)_第3頁
第09章輸入輸出流和文件操作(修改2縮減)_第4頁
第09章輸入輸出流和文件操作(修改2縮減)_第5頁
已閱讀5頁,還剩46頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第第9 9章章 輸入輸出流和文件操作輸入輸出流和文件操作流的基本概念流的基本概念流類流類nInputStream抽象字節輸入流類抽象字節輸入流類nOuputStream 抽象字節輸出流類抽象字節輸出流類nReader抽象字符輸入流類抽象字符輸入流類nWriter抽象字符輸出流類抽象字符輸出流類文件操作類文件操作類nFile文件類文件類nRandomAccessFile 隨機存取文件類隨機存取文件類第第9 9章章 本章主要內容本章主要內容流的基本概念流的基本概念n流(流(stream)是指一組有順序、有起點和終點的字節集合,是指一組有順序、有起點和終點的字節集合,是對是對數據傳輸數據傳輸的總稱或

2、抽象。數據在兩個對象之間的傳輸稱的總稱或抽象。數據在兩個對象之間的傳輸稱為為流流。n流的方向流的方向:數據由外部輸入設備流向內存的過程稱為數據輸數據由外部輸入設備流向內存的過程稱為數據輸入;由內存流向外部輸出設備的過程稱為數據輸出。因此,入;由內存流向外部輸出設備的過程稱為數據輸出。因此,從程序所在的內存角度看,流入內存的為從程序所在的內存角度看,流入內存的為輸入流輸入流,流出內存,流出內存的為的為輸出流輸出流。n流的基本操作流的基本操作:讀和寫讀和寫。從流中取得數據的操作稱為讀;向。從流中取得數據的操作稱為讀;向流中添加數據的操作稱為寫。流中添加數據的操作稱為寫。輸入流只能進行讀;輸出流只輸

3、入流只能進行讀;輸出流只能進行寫。能進行寫。流的基本概念流的基本概念在程序代碼中,用輸入流從外部設備中讀取數據到內存;用輸在程序代碼中,用輸入流從外部設備中讀取數據到內存;用輸出流將內存數據寫到外部設備中。出流將內存數據寫到外部設備中。 不同的外部設備對應不同不同的外部設備對應不同的流類。的流類。 程序代碼(內存中)程序代碼(內存中)輸入流輸入流輸出流輸出流鍵盤顯示器打印機文件文件讀取寫入標準輸入流標準輸入流標準輸出流標準輸出流文件輸入流文件輸入流文件輸出流文件輸出流流的基本概念流的基本概念 流采用緩沖區技術:對流進行讀流采用緩沖區技術:對流進行讀/寫操作,一次只能讀寫操作,一次只能讀/寫一寫

4、一個字節,數據傳輸效率低。為提高效率,將一塊內存空間設個字節,數據傳輸效率低。為提高效率,將一塊內存空間設計成緩沖區。配備緩沖區的流稱為計成緩沖區。配備緩沖區的流稱為緩沖流緩沖流。n當當向流寫入數據向流寫入數據時,數據被發送到緩沖區,當緩沖區滿時,時,數據被發送到緩沖區,當緩沖區滿時,系統將數據全部發送到相應的設備。如果在此之前要傳輸系統將數據全部發送到相應的設備。如果在此之前要傳輸數據,可以使用數據,可以使用flush()操作;操作;n當當從流讀取數據從流讀取數據時,系統實際從緩沖區讀。當緩沖區空時,時,系統實際從緩沖區讀。當緩沖區空時,系統就從相關設備自動讀取數據充滿緩沖區。系統就從相關設

5、備自動讀取數據充滿緩沖區。流的基本概念流的基本概念 java.io包中的數據流包中的數據流n字節流:以字節流:以字節字節作為流中元素的基本類型。作為流中元素的基本類型。n字符流:以字符流:以字符字符作為流中元素的基本類型。作為流中元素的基本類型。nInputStream抽象的抽象的字節字節輸入輸入流根類流根類nOuputStream抽象的抽象的字節字節輸出輸出流根類流根類nReader抽象的抽象的字符字符輸入輸入流根類流根類Writer抽象的抽象的字符字符輸出輸出流根類流根類9.2 9.2 字節輸入字節輸入/ /輸出流類輸出流類9.2.1 抽象字節流抽象字節流9.2.2 Java標準輸入標準輸

6、入/輸出輸出9.2.3 文件字節流文件字節流9.2.4 數據字節流數據字節流9.2.5 對象字節流對象字節流字節流字節流n字節輸入流類字節輸入流類InputStream :所有面向字節的輸入流超類。:所有面向字節的輸入流超類。public abstract class InputStream extends Object implements Closeable public abstract int read() throws IOException; /返回讀取的一個字節,抽象方法返回讀取的一個字節,抽象方法 public int read(byte b) throws IOExcepti

7、on /讀取若干字節到指定緩沖區讀取若干字節到指定緩沖區b,返回實際讀取的字節數,返回實際讀取的字節數 public void close() throws IOException /關閉輸入流關閉輸入流 InputStream類的子類字節流字節流n字節輸出流類字節輸出流類OutputStream:所有面向字節的輸出流超類。:所有面向字節的輸出流超類。public abstract class OutputStream extends Object implements Closeable, Flushable public abstract void write(int b) throws

8、IOException; /寫入一個字節,抽象方法寫入一個字節,抽象方法 public void write(byte b) throws IOException/將緩沖區中的若干字節寫入輸出流將緩沖區中的若干字節寫入輸出流 public void flush() throws IOException /立即傳輸立即傳輸 public void close() throws IOException /關閉輸出流關閉輸出流OutputStream類的子類字節流字節流1、字節輸入流、字節輸入流InputStream類類 :所有面向字節的輸:所有面向字節的輸入流的超類。入流的超類。2、字節輸出流、字

9、節輸出流OutputStream類:所有面向字節的類:所有面向字節的輸出流的超類。輸出流的超類。 字節流相關內容:字節流相關內容:標準輸入標準輸入/ /輸出流輸出流文件字節流文件字節流數據字節流數據字節流對象字節流對象字節流9.2.2 Java9.2.2 Java標準輸入標準輸入/ /輸出輸出n標準輸入標準輸入/輸出常量輸出常量public final class System extends Object public final static InputStream in /標準輸入常量標準輸入常量 public final static PrintStream out /標準輸出常量標準

10、輸出常量 public final static PrintStream err/標準錯誤輸出常量標準錯誤輸出常量System.in是是InputStream類的常量對象,調用類的常量對象,調用read()方法可方法可以從鍵盤接收數據;以從鍵盤接收數據;System.out是是PrintStream類的常量對象,調用類的常量對象,調用print()和和println()方法可以向顯示器輸出數據。方法可以向顯示器輸出數據。 nPrintStream類類public class PrintStream extends FilterOutputStream public void print(boo

11、lean b) public void print(char c) public void print(long l) public void print(int i) public void print(float f) public void print(double d) public void print(String s) public void print(Object obj) public void println()9.2.2 Java9.2.2 Java標準輸入標準輸入/ /輸出輸出 【例9.1】 標準輸入/輸出圖圖9.5 標準輸入過程標準輸入過程 輸入”abc123”鍵盤

12、標準輸入流程序讀取標準輸入流System.in.read()對字節數組進行操作01234567851197 98 99 49 50 51 13 10字節數組buffer實際讀入8 個字節System.in.read()會拋出異常abc123對應字符顯示器程序System.out.println(count=+count);99111 117 110 11661561310不會拋出異常寫入coun標準輸出流對應字符緩沖區t=8圖圖9.6 標準輸出過程標準輸出過程9.2.3 9.2.3 文件字節流文件字節流1、文件字節輸入流文件字節輸入流(FileInputStream)用于用于從文件讀數據從文件

13、讀數據。構造方法構造方法npublic FileInputStream (String name) throws FileNotFoundExceptionnpublic FileInputStream (File file) throws FileNotFoundException讀取字節的方法讀取字節的方法npublic int read() throws IOExceptionnpublic int read(byte b) throws IOExceptionnpublic int read(byte b ,int off , int len) throws IOException關閉

14、輸入流關閉輸入流npublic void close() throws IOException例子:例子:FileInputStream fin = new FileInputStream (“文件文件1”); /創建創建“文件文件1”的輸入流對象的輸入流對象count = fin.read(buffer); /從文件從文件1中讀取的數據放入數組中讀取的數據放入數組buffer中,中, count中是返回讀出中是返回讀出的字節數,當返回的字節數,當返回-1時文件讀完。時文件讀完。fin.close(); /關閉輸入流關閉輸入流9.2.3 9.2.3 文件字節流文件字節流2、文件字節輸出流、文件

15、字節輸出流(FileOutputStream)用于用于向文件寫數據向文件寫數據。構造方法構造方法npublic FileOutputStream (String name) throws FileNotFoundExceptionnpublic FileOutputStream (File file) throws FileNotFoundExceptionnpublic FileOutputStream (String name, Boolean append) throws FileNotFoundException寫入字節的方法寫入字節的方法npublic int write(int b

16、) throws IOException npublic int write (byte b) throws IOException npublic int write (byte b ,int off , int len) throws IOException 關閉輸出流關閉輸出流npublic void close() throws IOException例子:例子: FileOutputStream fout = new FileOutputStream(“文件文件1”); /創建創建“文件文件1”的輸出流對象的輸出流對象 fout.write(buffer); /將將buffer數組中

17、的數據寫入輸出流,即寫入到文件中。數組中的數據寫入輸出流,即寫入到文件中。 fout.close(); /關閉輸出流關閉輸出流9.2.3 9.2.3 文件字節流文件字節流append:默認:默認falsentrue為添加方式,數據添加在原文件的末尾為添加方式,數據添加在原文件的末尾nfalse為重寫方式,數據從原文件開始處寫入,為重寫方式,數據從原文件開始處寫入,覆蓋文件中原有的數據。覆蓋文件中原有的數據。讀文件時讀文件時指定文件不存在,拋出異常;指定文件不存在,拋出異常;寫文件時寫文件時指定文件不存在,則創建一個新文件寫指定文件不存在,則創建一個新文件寫入數據。入數據。9.2.3 9.2.3

18、 文件字節流文件字節流 【例例9.2】 使用文件字節輸入使用文件字節輸入/輸出流輸出流實現文件的輸入實現文件的輸入/輸出操作。輸出操作。n文件輸入操作文件輸入操作n文件輸出操作文件輸出操作n文件復制操作文件復制操作 9.2.4 9.2.4 數據字節流數據字節流 數據流允許程序按與機器無關的風格讀取或寫數據流允許程序按與機器無關的風格讀取或寫入數據。可以讀取或寫入任何入數據。可以讀取或寫入任何Java類型數據。類型數據。數據輸入流數據輸入流DataInputStream數據輸出流數據輸出流DataOutputStream以前只能寫字節數據以前只能寫字節數據現在任何現在任何JAVAJAVA數據數據

19、類型的數據都能寫類型的數據都能寫了!了!數據字節流是在字節流的基礎上對數據進行加工!數據字節流是在字節流的基礎上對數據進行加工!真正進行傳輸的還是字節流!真正進行傳輸的還是字節流!9.2.4 9.2.4 數據字節流數據字節流nDataInputStream類類public class DataInputStream extends FilterInputStream implements DataInput public DataInputStream(InputStream in) /構造方法構造方法 public final short readShort() throws IOExcep

20、tion public final byte readByte() throws IOException public final int readInt() throws IOException /讀取一個整型讀取一個整型 public final long readLong() throws IOException public final float readFloat() throws IOException public final double readDouble() throws IOException public final char readChar() throws I

21、OException /讀取一個字符讀取一個字符 public final boolean readBoolean() throws IOException 當輸入流結束時,拋出當輸入流結束時,拋出EOFException異常;異常;發生發生I/O錯誤時,拋出錯誤時,拋出IOEception異常。異常。FileInputStream fin = new FileInputStream (“文件文件1”); /創建創建“文件文件1”的輸入流對象的輸入流對象DataInputStream din = new DataInputStream(fin);int arrInt = din.readInt

22、();/從從“文件文件1”中讀取一個中讀取一個int類型數據放入類型數據放入arrInt變量中。變量中。din.close();fin.close(); /關閉輸入流關閉輸入流9.2.4 9.2.4 數據字節流數據字節流nDataOutputStream類類public class DataOutputStream extends FilterOutputStream implements DataOutput public DataOutputStream(OutputStream out) /構造方法構造方法 public final void writeByte(int v) throw

23、s IOException public final void writeShort(int v) throws IOException public final void writeInt(int v) throws IOException /寫入一個整型寫入一個整型 public final void writeLong(long v) throws IOException public final void writeFloat(float v) throws IOException public final void writeDouble(double v) throws IOExc

24、eption public final void writeChar(int v) throws IOException /寫入一個字符寫入一個字符 public final void writeBoolean(boolean v) throws IOException public final void writeChars(String s) throws IOException public final int size() /返回實際寫入的字節數返回實際寫入的字節數 FileOutputStream fout = new FileOutputStream(“文件文件1”); /創建創建

25、“文件文件1”的輸出流對象的輸出流對象 DataOutputStream dout = new DataOutputStream(fout); dout.writeInt(arrInt); /將將int 類型變量類型變量arrInt中的數據寫入輸出流,即寫入到文件中。中的數據寫入輸出流,即寫入到文件中。 dout.close(); fout.close(); /關閉輸出流關閉輸出流9.2.4 9.2.4 數據字節流數據字節流【例例9.3】 將將Fibonacci序列值寫入一個整序列值寫入一個整數類型文件中。數類型文件中。n數據寫入文件的思路同標準輸出數據寫入文件的思路同標準輸出n捕獲異常控制輸

26、入結束捕獲異常控制輸入結束 9.2.5 9.2.5 對象字節流對象字節流 對象流可以對象流可以直接寫入或讀取一個對象直接寫入或讀取一個對象。對。對象流分為:象流分為:n對象輸入流對象輸入流ObjectInputStream;n對象輸出流對象輸出流ObjectOutputStream。 它們必須它們必須建立在其他流之上建立在其他流之上。傳輸的關鍵是把。傳輸的關鍵是把有特殊結構的有特殊結構的對象進行序列化對象進行序列化,然后通過其他,然后通過其他流來進行傳輸。流來進行傳輸。9.2.5 9.2.5 對象字節流對象字節流n對象輸入流對象輸入流ObjectInputStream:用于恢復那些序列化:用于

27、恢復那些序列化的對象。的對象。構造方法:構造方法: public ObjectInputStream(InputStream in) throws IOException,StreamCorruptedException實例方法:實例方法: Public final Object readObject() throws OptionalDataException,ClassNotFoundException,IOException 讀取時,需要將其強制轉換為期望的類型。讀取時,需要將其強制轉換為期望的類型。 FileInputStream fin = new FileInputStream (

28、“文件文件1”); /創建創建“文件文件1”的輸入流對象的輸入流對象ObjectInputStream din = new ObjectInputStream (fin);arrInt = (強制類型轉換強制類型轉換)din.readObject();/從文件從文件1中讀取一個對象數據放入對象變量中讀取一個對象數據放入對象變量arrInt中。中。din.close();fin.close(); /關閉輸入流關閉輸入流9.2.5 9.2.5 對象字節流對象字節流n對象輸出流對象輸出流ObjectOutputStream:將:將 Java 對象的基本數對象的基本數據類型寫入據類型寫入 Output

29、Stream。構造方法:構造方法:public ObjectOutputStream(OutputStream Out) throws IOException實例方法:實例方法:Public final void writeObject (Object obj) throws IOException FileOutputStream fout = new FileOutputStream(“文件文件1”); /創建創建“文件文件1”的輸出流對象的輸出流對象 ObjectOutputStream dout = new ObjectOutputStream (fout); dout. writeO

30、bject(arrInt); /將對象將對象arrInt寫入輸出流,即寫入到文件中。寫入輸出流,即寫入到文件中。 dout.close(); fout.close(); /關閉輸出流關閉輸出流9.2.5 9.2.5 對象字節流對象字節流序列化與序列化與Serializable接口接口n由于一個類的對象包含多種信息,為了保證從對象流中能夠讀由于一個類的對象包含多種信息,為了保證從對象流中能夠讀取到正確的對象,要求所有寫入對象流的對象都必須是取到正確的對象,要求所有寫入對象流的對象都必須是序列化序列化的對象的對象。n一個類如果實現了序列化一個類如果實現了序列化Serializable接口,那么這個

31、類的對接口,那么這個類的對象就是象就是序列化的對象序列化的對象。nSerializable接口中沒有方法,因此實現該接口的類不需要實接口中沒有方法,因此實現該接口的類不需要實現額外的方法。一個序列化的子類對象也是序列化的。現額外的方法。一個序列化的子類對象也是序列化的。n如果一個對象的成員變量是一個對象,那么這個對象的數據成如果一個對象的成員變量是一個對象,那么這個對象的數據成員也會被保存。員也會被保存。n如果一個可序列化的對象包含對某個不可序列化的對象的引用,如果一個可序列化的對象包含對某個不可序列化的對象的引用,那么整個序列化操作將會失敗,并且會拋出一個那么整個序列化操作將會失敗,并且會拋

32、出一個NotSerializableException。【例例9.49.4】 使用對象流將若干學生對象寫入以對象為基本類型的記錄式文件中使用對象流將若干學生對象寫入以對象為基本類型的記錄式文件中圖圖9.7 9.7 各種輸入各種輸入/ /輸出流及其讀輸出流及其讀/ /寫方法寫方法 字節數組buffer基本數據類型變量i鍵盤文件輸入流顯示器文件對象objSystem.in.read(buffer)DataInputStreamreadInt()ObjectInputStreamreadObject()FileInputStreamread(buffer)FileInputStream輸出流Syst

33、em.out.print(i)ObjectInputStreamwriteObject(obj)FileOutputStreamwrite(buffer)FileOutputStreamSystem.out.print(obj.toString()DataOutputStreamwriteInt(i)9.3 9.3 字符輸入字符輸入/ /輸出流類輸出流類9.3.1 抽象字符流抽象字符流9.3.2 文件字符流文件字符流9.3.3 緩沖字符流緩沖字符流9.3.1 9.3.1 抽象字符流抽象字符流1.字符輸入流字符輸入流Reader 為所有面向字符的輸入流的超類。聲明為為所有面向字符的輸入流的超類。

34、聲明為java.io中中的抽象類。的抽象類。 public abstract class Reader extend Object2.字符輸出類字符輸出類Writer 為所有面向字符的輸出流的超類。聲明為為所有面向字符的輸出流的超類。聲明為java.io中中的抽象類。的抽象類。 public abstract class Writer extend Object 文件字符流文件字符流字符緩沖流字符緩沖流9.3.1 9.3.1 抽象字符流抽象字符流nReader類類public abstract class Reader extends Object implements Readable, C

35、loseable public int read() throws IOException public int read(char cbuf) throws IOException abstract public int read(char cbuf, int off, int len) throws IOException; abstract public void close() throws IOException;9.3.1 9.3.1 抽象字符流抽象字符流nWriter類類public abstract class Writer implements Appendable, Clo

36、seable, Flushable public void write(int c) throws IOException/c的低的低16位寫入位寫入 public void write(char cbuf) throws IOException public void write(char cbuf, int off,int len) throws IOException public void write(String str) throws IOException public void write(String str,int off,int len) throws IOExcepti

37、on public abstract void flush() throws IOException public abstract void close() throws IOException 9.3.2 9.3.2 文件字符流文件字符流n文件字符流文件字符流FileReader和和FileWriter類:類: 用于用于文件字符的輸入輸出文件字符的輸入輸出處理,與文件字節流類處理,與文件字節流類FileInputStream、FileOutputStream的功能相似。的功能相似。 FileReader文件字符輸入流:文件字符輸入流:npublic FileReader(File file

38、) throws FileNotFoundExceptionnpublic FileReader(String fileName) throws FileNotFoundExceptionnpublic int read() throws IOException npublic int read(char cbuf) throws IOException FileReader fin = new FileReader (“文件文件1”);/創建創建“文件文件1”的輸入流對象的輸入流對象fin.read(cbuf) ; /從文件字符輸入流中讀取到一個字符數組從文件字符輸入流中讀取到一個字符數組f

39、in.close();/關閉輸出流關閉輸出流9.3.2 9.3.2 文件字符流文件字符流n文件字符流文件字符流FileReader和和FileWriter類:類: 用于用于文件字符的輸入輸出文件字符的輸入輸出處理,與文件字節流類處理,與文件字節流類FileInputStream、FileOutputStream的功能相似。的功能相似。 FileWriter文件字符輸出流文件字符輸出流:npublic FileWriter(File file) throws IOExceptionnpublic FileWriter(String filename, Boolean append) throws

40、 IOExceptionnpublic void write(int c) throws IOExceptionnpublic void write(char cbuf) throws IOExceptionnpublic void write(String str) throws IOException /將字符串寫入輸出流將字符串寫入輸出流FileWriter fout = new FileWriter(“文件文件1”);/創建創建“文件文件1”的輸出流對象的輸出流對象fout.write(“abc); /向文件字符輸出流寫入一個字符串向文件字符輸出流寫入一個字符串fout.close()

41、;/關閉輸出流關閉輸出流9.3.3 9.3.3 緩沖字符流緩沖字符流n字符緩沖流字符緩沖流BufferedReader和和BufferedWriter類:類:字符緩沖輸入流字符緩沖輸入流BufferedReadernpublic BufferedReader(Reader in)npublic BufferedReader(Reader in, int sz) / sz緩沖區長度緩沖區長度npublic String readLine() throws IOException /讀取一行字符串,輸入流結束時返回讀取一行字符串,輸入流結束時返回null字符緩沖輸出流字符緩沖輸出流Buffered

42、Writer類類npublic BufferedWriter(Writer out)npublic BufferedWriter(Writer out, int sz) / sz緩沖區長度緩沖區長度npublic void newLine() throws IOException /寫入換行符。寫入換行符。【例例9.5】 將將Fibonacci序列值寫入一個文本文件中。序列值寫入一個文本文件中。FileReader fin = new FileReader(“文件文件1”);BufferedReader bin = new BufferedReader(fin);/創建創建“文件文件1”的輸出

43、流對象的輸出流對象aline = bin.readLine();/讀取一行字符串,輸入流結束時返回讀取一行字符串,輸入流結束時返回nullbin.close();fin.close();9.4 9.4 文件操作文件操作9.4.1 文件操作類文件操作類9.4.2 文件過濾器接口文件過濾器接口9.4.3 文件對話框組件文件對話框組件9.4.4 隨機存取文件類隨機存取文件類文件操作文件操作文件操作類文件操作類nFile文件類:記載文件屬性信息,是對文件進行操作文件類:記載文件屬性信息,是對文件進行操作的手段。的手段。n文件文件順序順序存取:采用流的方式,不同類型文件需要使存取:采用流的方式,不同類型

44、文件需要使用不同的流類。用不同的流類。n文件文件隨機隨機存取:采用存取:采用RandomAccessFile隨機存取文隨機存取文件類。件類。文件操作類文件操作類 File類的對象,表示了類的對象,表示了磁盤上的磁盤上的文件文件或或目錄目錄,保保存它們的各種存它們的各種屬性屬性并提供各種并提供各種操作操作方法方法,如文件名、,如文件名、長度、最后修改時間、是否只讀等;獲得當前文件路長度、最后修改時間、是否只讀等;獲得當前文件路徑名、判斷文件是否存在、創建文件、刪除文件等。徑名、判斷文件是否存在、創建文件、刪除文件等。File類聲明如下:類聲明如下: public class File exten

45、ds Object implement Serializable, Comparable文件操作類文件操作類構造方法構造方法nPublic File(String pathname)nPublic File(File path , String name)nPublic File(String path , String name)例如:例如:文件的建立文件的建立File f1=new File(“myfile.txt”);File f1=new File(“myfile.txt”);File f2=new File f2=new File(“mydir”,“myfile.txt”);File

46、(“mydir”,“myfile.txt”);File myDir=new File(“etc”);File myDir=new File(“etc”);File f3=new File(myDir,“myfile.txt”);File f3=new File(myDir,“myfile.txt”);例如:例如:目錄文件的建立目錄文件的建立 File myDir=new File(“myjava”); File myDir=new File(“myjava”);File dir=new File(“.”,“”);File dir=new File(“.”,“”);/dir/dir文件對象,表示

47、當前目錄。文件對象,表示當前目錄。File dir=new File(“./File dir=new File(“./”,“”);,“”);/dir/dir文件對象,表示當前目錄上一級目錄文件對象,表示當前目錄上一級目錄File myDir=new File(“File myDir=new File(“”,“”);,“”);/dir/dir文件對象,表示所在盤符根目錄文件對象,表示所在盤符根目錄文件操作類文件操作類 實例化一個實例化一個FileFile類對象,類對象,并不是真的生成并不是真的生成一個文件或目錄,而只是生成一個文件或目錄,而只是生成一個對文件和目錄進行一個對文件和目錄進行描述的對

48、象描述的對象。 例如,例如,new File(“myfile.txt”);new File(“myfile.txt”);并不會生成一個文件,而是描述有并不會生成一個文件,而是描述有這樣一個文件;這樣一個文件;new File(“etc”)new File(“etc”)也不是生成一個目錄,而是對這也不是生成一個目錄,而是對這個目錄進行描述的對象,例如生成當前目錄對象個目錄進行描述的對象,例如生成當前目錄對象new File(“.”,“”)new File(“.”,“”)當前目錄已經是存在的所以只是生成一個對當前目錄進行描述表示的對當前目錄已經是存在的所以只是生成一個對當前目錄進行描述表示的對象。

49、象。創建的方法:創建的方法:u public boolean createNewFile() throws public boolean createNewFile() throws IOExceptionIOException 當且僅當不存在具有此抽象路徑名指定的名稱的文件時,創建由此當且僅當不存在具有此抽象路徑名指定的名稱的文件時,創建由此抽象路徑名指定的一個新的空文件。抽象路徑名指定的一個新的空文件。u public boolean mkdir() public boolean mkdir() 創建此抽象路徑名指定的目錄。創建此抽象路徑名指定的目錄。例如:例如: 建立文件夾:建立文件夾:

50、child = new File(“myjava”);child = new File(“myjava”); child.mkdir(); child.mkdir();文件操作類文件操作類File類提供的方法類提供的方法(1)訪問文件對象訪問文件對象nPublic String getName()/返回文件名,不包含路徑返回文件名,不包含路徑nPublic String getPath ()/返回相對路徑返回相對路徑nPublic String getAbsolutePath ()/返回絕對路徑返回絕對路徑nPublic String getParent ()/返回父文件對象的路徑名返回父文件

51、對象的路徑名nPublic File getParentFile ()/返回父文件對象返回父文件對象(2)獲得文件屬性獲得文件屬性nPublic long length()nPublic boolean exists()nPublic long lastModified()npublic boolean isDirectory() npublic boolean isFile() 文件操作類文件操作類npublic boolean canRead()npublic boolean canWrite()npublic boolean isHidden()npublic boolean setRe

52、adOnly()npublic boolean setLastModified(long time)(3)文件操作文件操作npublic boolean createNewFile() throws IOException npublic boolean renameTo(File dest)npublic boolean delete()(4)目錄操作目錄操作npublic boolean mkdir()npublic String list()npublic File listFiles()【例例9.6】 當前目錄文件列表。當前目錄文件列表。文件過濾器接口文件過濾器接口FileFilter

53、和和FilenameFilter接口接口public interface FileFilter public boolean accept(File pathname)public interface FilenameFilter public boolean accept(File dir, String name)文件過濾器接口文件過濾器接口FileFilter和和FilenameFilter接口接口 accept() /文件過濾代碼實現文件過濾代碼實現獲得文件列表時使用過濾器獲得文件列表時使用過濾器nPublic String list(FilenameFilter filter)nPu

54、blic File listFiles(FilenameFilter filter)nPublic String list(FileFilter filter)【例例9.7】 帶過濾器的文件名列表帶過濾器的文件名列表FileDialog在在java.awt包中,是對話框的子類,分為兩種。包中,是對話框的子類,分為兩種。u打開(打開(open)文件對話框)文件對話框u保存(保存(save)文件對話框)文件對話框文件對話框的構造方法文件對話框的構造方法nPublic FileDialog(Frame parent)nPublic FileDialog(Frame parent, String title)nPublic FileDialog(Frame parent,

溫馨提示

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

評論

0/150

提交評論