Java學習day-18:IO流(字節(jié)流)

一、基本概念:

1.IO基本概念:

IO的本質就是輸入輸出(Input\Output);

(1)輸入(Input):指的是可以讓程序從外部系統(tǒng)獲得數(shù)據(jù)(讀取外部數(shù)據(jù));

(2)輸出(Output):指的是程序輸出數(shù)據(jù)給外部系統(tǒng)從而可以操作外部系統(tǒng)(將數(shù)據(jù)寫出到外部系統(tǒng));

2.數(shù)據(jù)源:

數(shù)據(jù)源data source,提供數(shù)據(jù)的原始媒介。

數(shù)據(jù)源分為:

(1)源設備:為程序提供數(shù)據(jù),一般對應輸入流;

(2)目標設備:程序數(shù)據(jù)的目的地,一般對應輸出流;

3.流的概念:

(1)流的原理:

1)在 Java 程序中,對于數(shù)據(jù)的輸入/輸出操作以“流”(stream) 方式進行;

2)J2SDK?(Java 2 Software Development Kit)提供了各種各樣的“流”類,用以獲取不同種類的數(shù)據(jù);程序中通過標準的方法輸入或輸出數(shù)據(jù)。

3)Java 的流類型一般位于 java.io 包中。

4) 流是一個抽象、動態(tài)的概念,是一連串連續(xù)動態(tài)的數(shù)據(jù)集合。

(2)流的分類:

1)按照方向分為:輸入流和輸出流;

2)按照讀寫單位分為:字節(jié)流和字符流;

3)按照功能分為:節(jié)點流和處理流;

二、文件字節(jié)流:

1.字節(jié)輸入流(InputStream):

(1)字節(jié)流輸入流InputStream是抽象類,F(xiàn)ileInputStream繼承了InputStream類;FileInputStream 讀取文件內(nèi)容。

(2)構造方法:

1) FileInputStream(File file);通過打開與實際文件的連接創(chuàng)建一個FileInputStrea

2)FileInputStream(String name)通過打開一個到實際文件的連接來創(chuàng)建一個FileInputStream,該文件通過文件系統(tǒng)中的路徑名 name 指定。

(3)常用方法:

?int read():從此輸入流中讀取一個數(shù)據(jù)字節(jié)。

int read(byte[] b):從此輸入流中將最多 b.length 個字節(jié)的數(shù)據(jù)讀入一個 byte 數(shù)組中。

?void close(): 關閉此文件輸入流并釋放與此流有關的所有系統(tǒng)資源。

代碼截圖
結果

2.字節(jié)輸出流(OutputStream):

(1)java.io.OutPutStream抽象類;FileOutPutStream:繼承了OutputStream;文件輸出流是用于將數(shù)據(jù)寫入到輸出流File。

(2)構造方法:

1)FileOutputStream(File file):創(chuàng)建一個向指定 File 對象表示的文件中寫入數(shù)據(jù)的文件輸出流。

2)FileOutputStream(String name): 創(chuàng)建一個向具有指定名稱的文件中寫入數(shù)據(jù)的輸出文件流

3)FileOutputStream(File file, boolean append): 創(chuàng)建一個向指定 File 對象表示的文件中寫入數(shù)據(jù)的文件輸出流。

4)FileOutputStream(String name, boolean append):創(chuàng)建一個向具有指定 name 的文件中寫入數(shù)據(jù)的輸出文件流。

(3)常用方法:

1) write(byte[] b): 將 b.length 個字節(jié)從指定 byte 數(shù)組寫入此文件輸出流中。

2)write(int b): 將指定字節(jié)寫入此文件輸出流。

3) close(): 關閉此文件輸出流并釋放與此流有關的所有系統(tǒng)資源。

代碼截圖
結果

3.實現(xiàn)文件復制:

1)使用輸入流從源文件中將文件讀取出來;

2)使用輸出流將文件寫入到目的地;

代碼截圖
結果

三、文件字符流:


1.字符輸入流(Reader):

(1)FileReader字符輸出流:繼承了Reader抽象類;

(2)構造方法:

1)FileReader(File file)? 在給定從中讀取數(shù)據(jù)的 File 的情況下創(chuàng)建一個新 FileReader。

2)FileReader(String fileName): 在給定從中讀取數(shù)據(jù)的文件名的情況下創(chuàng)建一個新 FileReader。

(2)常用方法;

1)read():讀取單個字符。

2)read(char[] cbuf, int off, int len):將字符讀入數(shù)組的某一部分。

3)read(CharBuffer target);試圖將字符讀入指定的字符緩沖區(qū)。

4)close():關閉該流并釋放與之關聯(lián)的所有資源。

代碼截圖
結果

2.字符輸出流(Writer):

(1)FileWriter用于寫入字符流。繼承了OutputStreamWriter抽象類;

(2)構造方法:

1)FileWriter(File file):根據(jù)給定的 File 對象構造一個 FileWriter 對象。

2)FileWriter(String fileName):根據(jù)給定的文件名構造一個 FileWriter 對象。

3)FileWriter(File file, boolean append):根據(jù)給定的 File 對象構造一個 FileWriter 對象。

(3)常用方法:

1) void write( int c ):寫入單個字符。

2)void write( char[]cbuf):寫入字符數(shù)組。

3)abstract void write( char [ ]cbuf, int off, int len ):?寫入字符數(shù)組的某一部分。

4)void write(String str):寫入字符串。

5)abstract void flush( ):刷新該流的緩沖。

6)void close( ):關閉此流,但要先刷新它。

代碼截圖
結果

(3)使用字符流實現(xiàn)文件復制:

1)創(chuàng)建字符輸入流和輸出流;

2)使用字符輸入輸出流;

3)通過循環(huán)獲取文件的字節(jié);

4)使用read()和write分別讀取和寫入字符

5)關閉程序;

代碼截圖
結果
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容