




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 Java Java 程序設計程序設計單元五:單元五:JavaJava語言高級程序設計語言高級程序設計 Java Java 程序設計程序設計 知識目標 掌握文件讀寫各種類型流的使用。 能力目標 能夠使用文件字節流常用類。 能夠使用文件字符流常用類。 Java Java 程序設計程序設計4任務陳述任務陳述123知識準備知識準備任務實施任務實施任務拓展任務拓展任務實訓任務實訓5 Java Java 程序設計程序設計任務描述:任務描述: Java源程序添加行號。編寫一個程序將源文件另存為其他的文件,并為每一行代碼在前面添加行號。 1. 任務陳述任務陳述 Java Java 程序設計程序設計 2. 知
2、識準備知識準備 File類不負責文件的讀寫。類不負責文件的讀寫。Java中文件讀寫是通中文件讀寫是通過流的形式完成的。過流的形式完成的。通過流能使我們能自由地控制通過流能使我們能自由地控制包括文件,內存,包括文件,內存,IO設備等等中的數據的流向。設備等等中的數據的流向。 如:可以從文件輸入流中獲取數據,經處理后再通過網絡輸如:可以從文件輸入流中獲取數據,經處理后再通過網絡輸出流把數據輸出到網絡設備上;或利用對像輸出流把一個程出流把數據輸出到網絡設備上;或利用對像輸出流把一個程序中的對象輸出到一個格式流文件中,并通過網絡流對象將序中的對象輸出到一個格式流文件中,并通過網絡流對象將其輸出到遠程機
3、器上,然后在遠程機器上利用對象輸入流將其輸出到遠程機器上,然后在遠程機器上利用對象輸入流將對象還原。對象還原。 Java Java 程序設計程序設計 2. 知識準備知識準備流的分類流的分類 流在流在JavaJava中是指計算機中流動的緩沖區。中是指計算機中流動的緩沖區。從外設從外設備流向中央處理器的數據流成為備流向中央處理器的數據流成為“輸入流輸入流”,反之,反之成為輸出流。成為輸出流。Java.ioJava.io包提供處理不同類型的流類,包提供處理不同類型的流類,有字節流、字符流、文件流和對象流等。其中,字有字節流、字符流、文件流和對象流等。其中,字節流類名以節流類名以StreamStrea
4、m結尾,字符流類名以結尾,字符流類名以ReaderReader或或WriterWriter結尾;按數據流動的方向分為輸入流(來源結尾;按數據流動的方向分為輸入流(來源流)和輸出流(接收流),輸入流類名以流)和輸出流(接收流),輸入流類名以InIn開始,開始,輸出流類名以輸出流類名以OutOut開始。開始。 Java Java 程序設計程序設計 2. 知識準備知識準備uInputStreamInputStream是抽象類,所有字是抽象類,所有字節輸入流類都直接或間接繼承此類。節輸入流類都直接或間接繼承此類。InputStreamInputStream類的常用方法包括:類的常用方法包括:uint
5、available() int available() 返回此輸入流返回此輸入流方法的下一個調用方可以不受阻塞方法的下一個調用方可以不受阻塞地從此輸入流讀取(或跳過)的字地從此輸入流讀取(或跳過)的字節數。節數。uvoid close() void close() 關閉此輸入流并關閉此輸入流并釋放與該流關聯的所有系統資源。釋放與該流關聯的所有系統資源。uabstract abstract int read() int read() 從輸入從輸入流讀取下一個數據字節。流讀取下一個數據字節。uint read(byteint read(byte b) b) 從輸入流從輸入流中讀取一定數量的字節并將
6、其存儲中讀取一定數量的字節并將其存儲在緩沖區數組在緩沖區數組 b b 中。中。5.6 字節流字節流InputStream和和OutputStream是字節流的兩個頂層父類,提供了輸入流類是字節流的兩個頂層父類,提供了輸入流類與輸出流類的通用與輸出流類的通用API。 Java Java 程序設計程序設計 2. 知識準備知識準備 字節輸入流類很多,這里重點介紹字節輸入流類很多,這里重點介紹FileInputStreamFileInputStream、BufferedInputStreamBufferedInputStream和和DataInputStreamDataInputStream File
7、InputStreamFileInputStream:此類用于從本地文件系統中讀取文件內容。構造方法:構造方法:uFileInputStream(File file):FileInputStream(File file):通過打開一個到實際文件的連通過打開一個到實際文件的連接來創建一個接來創建一個 FileInputStreamFileInputStream,該文件通過文件系統中的,該文件通過文件系統中的 File File 對象對象 file file 指定。指定。 uFileInputStream(String name):FileInputStream(String name):通過打開
8、一個到實際文件的通過打開一個到實際文件的連接來創建一個連接來創建一個 FileInputStreamFileInputStream,該文件通過文件系統中的路,該文件通過文件系統中的路徑名徑名 name name 指定。指定。常用方法:常用方法:uint int availableavailable()():返回下一次對此輸入流調用的方法可以不受返回下一次對此輸入流調用的方法可以不受阻塞地從此輸入流讀取(或跳過)的估計剩余字節數。阻塞地從此輸入流讀取(或跳過)的估計剩余字節數。 uvoid void close():close():關閉此文件輸入流并釋放與此流有關的所有系統關閉此文件輸入流并釋放
9、與此流有關的所有系統資源。資源。 Java Java 程序設計程序設計 2. 知識準備知識準備BufferedInputStream:此類本身帶有一個緩沖區,在讀取數:此類本身帶有一個緩沖區,在讀取數據時,先放到緩沖區中,可以減少對數據源的訪問,提高運據時,先放到緩沖區中,可以減少對數據源的訪問,提高運行的效率。行的效率。構造方法:構造方法:vBufferedInputStream(InputStream in):創建一個創建一個 BufferedInputStream 并保存其參數,即輸入流并保存其參數,即輸入流 in,以便將來使用。,以便將來使用。 vBufferedInputStream
10、(InputStream in, int size):創建具有指定緩沖區大小創建具有指定緩沖區大小的的 BufferedInputStream 并保存其參數,即輸入流并保存其參數,即輸入流 in,以便將來使用。,以便將來使用。 常用方法:常用方法:vint available():返回可以從此輸入流讀取(或跳過)、且不受此輸入流接返回可以從此輸入流讀取(或跳過)、且不受此輸入流接下來的方法調用阻塞的估計字節數。下來的方法調用阻塞的估計字節數。 vvoid close():關閉此輸入流并釋放與該流關聯的所有系統資源。關閉此輸入流并釋放與該流關聯的所有系統資源。 vint read():從輸入流中
11、讀取數據的下一個字節。從輸入流中讀取數據的下一個字節。 vint read(byte b, int off, int len):從此字節輸入流中給定偏移量處開始將從此字節輸入流中給定偏移量處開始將各字節讀取到指定的各字節讀取到指定的 byte 數組中。數組中。 Java Java 程序設計程序設計 2. 知識準備知識準備DataInputStream:此類提供一些基于多字節讀取方法,從而可:此類提供一些基于多字節讀取方法,從而可以讀取基本數據類型的數據。以讀取基本數據類型的數據。構造方法:構造方法:DataInputStream(InputStream in) :使用指定的底層使用指定的底層
12、InputStream 創建一個創建一個DataInputStream。常用方法:常用方法: int read(byte b) :從包含的輸入流中讀取一定數量的字節,:從包含的輸入流中讀取一定數量的字節,并將它們存儲到緩沖區數組并將它們存儲到緩沖區數組 b 中。中。 int read(byte b, int off, int len) :從包含的輸入流中將最多:從包含的輸入流中將最多 len 個字節讀入一個個字節讀入一個 byte 數組中。數組中。 【例【例5-6】通過文件讀寫實現文件復制。實現了從】通過文件讀寫實現文件復制。實現了從c:/temp.txt文文件讀取數據,并寫入到件讀取數據,并
13、寫入到c:/temp1.txt文件中去的功能。程序運行文件中去的功能。程序運行時文件時文件c:/temp.txt必須要先存在。必須要先存在。BufferedReaderExample.java Java Java 程序設計程序設計 2. 知識準備知識準備5.6.2 outputStream字節流字節流 OutputStream是抽象類,所有字節輸出流類都直接或間是抽象類,所有字節輸出流類都直接或間接繼承此類。接繼承此類。OutputStream的子類必須始終提供至少一種可的子類必須始終提供至少一種可寫入一個輸出字節的方法。寫入一個輸出字節的方法。 Java Java 程序設計程序設計 2. 知
14、識準備知識準備OutputStream的常用方法包括:的常用方法包括:uvoid close() 關閉此輸出流并釋放與此流有關的所關閉此輸出流并釋放與此流有關的所有系統資源。有系統資源。uvoid flush() 刷新此輸出流并強制寫出所有緩沖的刷新此輸出流并強制寫出所有緩沖的輸出字節。輸出字節。uvoid write(byte b) 將將 b.length 個字節從指定的字個字節從指定的字節數組寫入此輸出流。節數組寫入此輸出流。uvoid write(byte b, int off, int len) 將指定字節數將指定字節數組中從偏移量組中從偏移量 off 開始的開始的 len 個字節寫入
15、此輸出流。個字節寫入此輸出流。uabstract void write(int b) 將指定的字節寫入此輸將指定的字節寫入此輸出流。出流。 Java Java 程序設計程序設計 2. 知識準備知識準備字節輸出流類很多,這里重點介紹如下字節輸出流類很多,這里重點介紹如下3種:種:uFileOutputStream:此類用于從本地文件系統的文件中寫入數據。:此類用于從本地文件系統的文件中寫入數據。構造方法:構造方法:uFileOutputStream(File file) :創建一個向指定:創建一個向指定 File 對象表示的文對象表示的文件中寫入數據的文件輸出流。件中寫入數據的文件輸出流。uFi
16、leOutputStream(String name) :創建一個向具有指定名稱的文:創建一個向具有指定名稱的文件中寫入數據的輸出文件流。件中寫入數據的輸出文件流。常用方法:常用方法:uvoid close():關閉此文件輸出流并釋放與此流有關的所有系統資源。關閉此文件輸出流并釋放與此流有關的所有系統資源。 uFileDescriptor getFD():返回與此流有關的文件描述符。返回與此流有關的文件描述符。 uvoid write(byte b):將將 b.length 個字節從指定個字節從指定 byte 數組寫入此文數組寫入此文件輸出流中。件輸出流中。 uvoid write(byte
17、b, int off, int len):將指定將指定 byte 數組中從偏移量數組中從偏移量 off 開始的開始的 len 個字節寫入此文件輸出流。個字節寫入此文件輸出流。 uvoid write(int b):將指定字節寫入此文件輸出流。將指定字節寫入此文件輸出流。 Java Java 程序設計程序設計 2. 知識準備知識準備 BufferedOutputStream:此類本身帶有一個緩沖區,在:此類本身帶有一個緩沖區,在寫取數據時,先放到緩沖區中,實現緩沖的數據流。寫取數據時,先放到緩沖區中,實現緩沖的數據流。構造方法:構造方法:uBufferedOutputStream(OutputS
18、tream out) :創建一個新的:創建一個新的緩沖輸出流,以將數據寫入指定的底層輸出流。緩沖輸出流,以將數據寫入指定的底層輸出流。 uBufferedOutputStream(OutputStream out, int size):創建:創建一個新的緩沖輸出流,以將具有指定緩沖區大小的數據寫入一個新的緩沖輸出流,以將具有指定緩沖區大小的數據寫入指定的底層輸出流。指定的底層輸出流。 常用方法:常用方法:uvoid flush():刷新此緩沖的輸出流。刷新此緩沖的輸出流。 uvoid write(byte b, int off, int len):將指定將指定 byte 數組中從偏數組中從偏移
19、量移量 off 開始的開始的 len 個字節寫入此緩沖的輸出流。個字節寫入此緩沖的輸出流。 uvoid write(int b):將指定的字節寫入此緩沖的輸出流。將指定的字節寫入此緩沖的輸出流。 Java Java 程序設計程序設計 2. 知識準備知識準備 DataOutputStream(OutputStream out) :創建一個新的:創建一個新的數據輸出流,將數據寫入指定基礎輸出流。數據輸出流,將數據寫入指定基礎輸出流。常用方法:常用方法:u void flush() :清空此數據輸出流。:清空此數據輸出流。 u int size() :返回計數器:返回計數器 written 的當前值
20、,即到目前為止寫的當前值,即到目前為止寫入此數據輸出流的字節數。入此數據輸出流的字節數。 u void write(byte b, int off, int len):將指定:將指定 byte 數組中從數組中從偏移量偏移量 off 開始的開始的 len 個字節寫入基礎輸出流。個字節寫入基礎輸出流。 u void write(int b):將指定字節(參數:將指定字節(參數 b 的八個低位)寫入的八個低位)寫入基礎輸出流。基礎輸出流。 【例例5-7】將用戶輸入保存到文件中。其功能是:從控制臺輸入將用戶輸入保存到文件中。其功能是:從控制臺輸入50個字節個字節的數據,輸出到的數據,輸出到C盤盤wri
21、te.txt文件中,讀取文件中,讀取write.txt文件中的內容,輸出到文件中的內容,輸出到調試窗口中。調試窗口中。ReadWriteFile.java Java Java 程序設計程序設計 2. 知識準備知識準備5.7 5.7 字符流字符流 ReaderReader和和WriterWriter是是java.iojava.io包中的兩個字符流類的頂層包中的兩個字符流類的頂層抽象父類,定義了在抽象父類,定義了在I/OI/O流中讀寫字符數據的通用流中讀寫字符數據的通用APIAPI。在。在JavaJava中字符采用是中字符采用是UnicodeUnicode字符編碼。常見字符輸入字符編碼。常見字符輸
22、入/ /輸出流輸出流是由是由ReaderReader和和WriterWriter抽象類派生出來的。處理數據時是以字抽象類派生出來的。處理數據時是以字符為基本單位的。符為基本單位的。 Java Java 程序設計程序設計 2. 知識準備知識準備 FileReader FileReader:用來讀取字符文件的便捷類。此類的構造方法:用來讀取字符文件的便捷類。此類的構造方法假定默認字符編碼和默認字節緩沖區大小都是適當的。假定默認字符編碼和默認字節緩沖區大小都是適當的。其構造方法有如下其構造方法有如下2 2種:種:uFileReader(File file) FileReader(File file)
23、 :在給定從中讀取數據的:在給定從中讀取數據的 File File 的情的情況下創建一個新況下創建一個新 FileReaderFileReader。 uFileReader(String fileName) FileReader(String fileName) :在給定從中讀取數據的文件:在給定從中讀取數據的文件名的情況下創建一個新名的情況下創建一個新 FileReaderFileReader。 BufferedReaderBufferedReader類是類是ReaderReader類的子類,為類的子類,為Reader Reader 對象添加字符對象添加字符緩沖器,為數據輸入分配內存存儲空間
24、,存取數據更為有效。緩沖器,為數據輸入分配內存存儲空間,存取數據更為有效。其構造方法有如下其構造方法有如下2 2種:種:uBufferedReader(Reader in) BufferedReader(Reader in) :創建一個使用默認大小輸入緩:創建一個使用默認大小輸入緩沖區的緩沖字符輸入流。沖區的緩沖字符輸入流。 uBufferedReader(Reader in, int sz) BufferedReader(Reader in, int sz) : 創建一個使用指定創建一個使用指定大小輸入緩沖區的緩沖字符輸入流。大小輸入緩沖區的緩沖字符輸入流。 Java Java 程序設計程序
25、設計 2. 知識準備知識準備其操作方法有:其操作方法有:u void close():void close():關閉該流并釋放與之關聯的所有資源。關閉該流并釋放與之關聯的所有資源。 u void mark(int readAheadLimit):void mark(int readAheadLimit):標記流中的當前位置。標記流中的當前位置。 u boolean markSupported():boolean markSupported():判斷此流是否支持判斷此流是否支持 mark() mark() 操作(它一定支持)。操作(它一定支持)。 u i int read():nt read()
26、:讀取單個字符。讀取單個字符。 u int read(char cbuf, int off, int len):int read(char cbuf, int off, int len):將字符讀將字符讀入數組的某一部分。入數組的某一部分。 u String readLine():String readLine():讀取一個文本行。讀取一個文本行。 u boolean ready():boolean ready():判斷此流是否已準備好被讀取。判斷此流是否已準備好被讀取。 u void reset()void reset(): :將流重置到最新的標記。將流重置到最新的標記。 u long sk
27、ip(long n)long skip(long n): :跳過字符。跳過字符。 Java Java 程序設計程序設計 2. 知識準備知識準備5.7.2 Writer類WriterWriter寫入字符類型寫入字符類型 Java Java 程序設計程序設計 2. 知識準備知識準備字符輸出流類很多,這里重點介紹字符輸出流類很多,這里重點介紹FileWriterFileWriter和和BufferedWriterBufferedWriter:FileWriterFileWriter:用來寫入字符文件的便捷類。:用來寫入字符文件的便捷類。FileWriter FileWriter 用于寫入字符流。要寫
28、入原始字用于寫入字符流。要寫入原始字節流。節流。其構造方法有如下其構造方法有如下2 2種:種:uFileWriter(File file):FileWriter(File file):根據給定的根據給定的 File File 對象構造一個對象構造一個 FileWriter FileWriter 對象。對象。uFileWriter(String fileName):FileWriter(String fileName):根據給定的根據給定的文件名構造一個文件名構造一個 FileWriter FileWriter 對象。對象。 Java Java 程序設計程序設計uBufferedWriter:將
29、文本寫入字符輸出流,緩沖各個字符,從而提供單個字符、數組和字符串的高效寫入。可以指定緩沖區的大小,或者接受默認的大小。在大多數情況下,默認值就足夠大了。除非要求提示輸出,否則建議用 BufferedWriter 包裝所有其 write() 操作可能開銷很高的 Writer。u【例5-8】帶緩沖的字符流使用示例。ReaderWriter.java Java Java 程序設計程序設計 3. 任務實施任務實施 使用使用BufferedReaderBufferedReader從文件中逐行讀入從文件中逐行讀入JavaJava源文件中的代源文件中的代碼,在每行代碼前加上行號后,使用碼,在每行代碼前加上行
30、號后,使用PrintWriterPrintWriter逐行將代碼逐行將代碼寫入新文件。寫入新文件。(1)(1)定義類定義類InsertLineNumberInsertLineNumber。(2)(2)編寫編寫openopen方法,將源代碼文件內容讀入字符串方法,將源代碼文件內容讀入字符串strFinalstrFinal對象對象中中。(3)(3)編寫編寫saveAssaveAs方法,從方法,從strFinalstrFinal對象中逐行讀出代碼,增加行對象中逐行讀出代碼,增加行號并寫入新文件中號并寫入新文件中。(4)(4)在在mainmain方法中創建方法中創建InsertLineNumberIn
31、sertLineNumber類對象,調用類對象,調用openopen、saveAssaveAs方法方法。 Java Java 程序設計程序設計public void open(String fileName)tryBufferedReader in = new BufferedReader(new FileReader(fileName);while(strTemp = in.readLine()!= null)strFinal = strFinal + strTemp + n;in.close();catch(IOException e)System.out.println(e); Java
32、 Java 程序設計程序設計public void saveAs(String fileName)tryBufferedReader in = new BufferedReader (new StringReader(strFinal);PrintWriter out = new PrintWriter (new BufferedWriter(new FileWriter(fileName);int lineCount = 1;while(strTemp = in.readLine()!= null)out.println(lineCount+ + : + strTemp);in.close(
33、);out.close();catch(IOException e) System.out.println(e); Java Java 程序設計程序設計public static void main(String args) throws IOExceptionInsertLineNumber obj = new InsertLineNumber();obj.open(E:/EclipseWorkspace/task1/src/com/task25/FileIO.java);obj.saveAs(d:FileIO.txt); Java Java 程序設計程序設計4. 任務拓展任務拓展對象流對象流ObjectInputStream和和ObjectOutputStream可可以將以將Java對象輸入、輸出,對象輸入、輸出,例如:將對象保存到文件例如:將對象保存到文件,實現對象數據的持久化。,實現對象數據的持久化。ObjectInputStream主要方法主要方法 Object readObject()負責讀入一個對象,讀入后
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 設備現場維修管理制度
- 設備缺陷登記管理制度
- 設想幾種班級管理制度
- 設計服務收費管理制度
- 設計部門人事管理制度
- 診所租賃設備管理制度
- 試驗檢測合同管理制度
- 財務針對部門管理制度
- 財政專用資金管理制度
- 貨物專用運輸管理制度
- 門診護理溝通技巧
- 常見急癥教育課件
- 行測圖形推理1000題庫帶答案
- 2024年深圳市房屋租賃合同(3篇)
- 學校食品安全投訴舉報制度及流程
- 食品感官檢驗:食品感官檢驗的基本條件
- 職業技能等級認定投訴舉報制度
- 5.2 預防犯罪 課件- 2024-2025學年統編版道德與法治八年級上冊
- 路燈控制器課程設計仿真
- 呼吸機霧化吸入療法護理實踐專家共識
- 廣西壯族賀州市2024年小升初考試數學試卷含解析
評論
0/150
提交評論