I: input 輸入,讀取到內存
O: Output 輸出,寫入文件
流: 數據流(字符,字節)
輸入: 字節輸入流(FileInputStream),字符輸入流(FileReader)
輸出: 字節輸出流(FileOutputStream),字符輸出流(FileWriter)
【字節流】
OutputStream:字節輸入流,是所有字節輸入流ed父類
所屬包:java.io包中
★:公共的成員方法:
abstract 返回值:void write(int b) 寫入一個字節
返回值:void write(vyte[] b) 寫入一個字節數組 寫入數據的時候,如果是整數,會查詢ADCLL表,
如果是第一個是負數,第二個字節可以使正數,也可以使負數,查詢的時候會把連個字節組成一個字節.
快速寫入字節數組的方法:String類中有一個方法 返回值:byte[] getBytes(String charseName) 把字符串轉換爲字節數組
返回值:void write(byte[] b,int off, int len) 寫入字節數組,off是開始索引,len寫幾個
返回值:void close() 關閉此輸出流並釋放與此流有關的所有系統資源.
【FileOutputStream】文件字節輸出流
作用:把內存中的數據,以字節的方式,寫入到文件中.
構造方法:
FileOutputStream(File file) 創建一個向指定File對象表示的文件中寫入數據的文件輸出流
FilePutputStream(String name) 創建一個向具體指定名稱的文件中寫入數據的輸出文件流
構造方法的參數: file:文件 name:文件的路徑 都是寫入數據的目的地
特點:如果構造方法中指定的文件或者文件的路徑所指向的文件不存在,構造方法就會創建一個文件,
如果沒有打開追加寫的開關,文件已經存在,則會覆蓋.
使用步驟:
1:創建一個字節輸出流對象FileOutputStream,綁定數據的目的地
2:使用FileOutoutStream中的write方法,把數據寫入到文件中.
3:釋放資源.
流寫入數據的時候,會找到JVM,JVM會調用系統本地哦的方法完成寫,使用完 流要關閉和系統有關的資源(釋放內存).
文件的續寫和換行:
追加寫:使用兩個參數的構造方法
FileOutputStream(File file, boolean append)
FileOutputStream(String name, boolean append)
參數:
File file,String name:寫入數據的目的地
boolean append:追加寫的開關,true:可以追加寫(往之前的文件,繼續寫內容),fasle:不能追加寫(覆蓋之前的文件)
換行:要輸入通用的換行符號
fos.write(System.getProperty("line.separator").getBytes());
【InputStream】字節輸入流,是所有字節輸入流的父類
成員方法:
返回值:int read():讀取一個字節並返回,沒有字節返回-1
返回值:int read(byte[]): 讀取一定量的字節數,並存儲到字節數組中,返回讀取到的字節數
byte數組的作用:起到緩衝作用,一次可以往數組中緩衝多個字節,可以提高讀取效率.
返回的int是每次讀取的有效字節個數.
返回值:void close(): 關閉此文件輸入流並釋放與此流有關的所有系統資源
★ FileInputStream 文件字節輸入流
作用:把文件中的數據,以字節的方式讀取到內存中
構造方法:
FileInputStream(String name)
FileInputStream(File file)
參數:讀取的哪個文件(數據源)
String name:字符串的文件路徑
File file:讀取的文件
使用步驟:
1.創建字節輸入流對象FileInputStream,並且綁定數據源
2.使用FileInputStream對象中的方法read,讀取文件
3.釋放資源
【BufferedOutputStream】 字節緩衝輸出流 extends OutputStream
字節緩衝輸入流作用:給基本流早呢更加一個緩衝區,提高基本流的效率
繼承了父類的公用的成員方法
構造方法:
BufferedOutputStream(OutputStream out) 創建一個新的緩衝輸出流,以將數據寫入指定的底層輸入流
參數:
OutputStream out: 字節輸出流,可以使用FileOutputStream
參數傳遞時哪個字節輸出流,就會給哪個字節輸出流增加一個緩衝區,提高這個流的效率.
使用步驟:
1:創建FileOutputStream對象,綁定數據目的地
2:創建BufferedOutputStream對象,構造方法中傳遞FileOutputStream,提高FileOutputSteam效率
3:使用BufferedOutputStream中的方法,write,把數據寫入緩衝區中
4:使用BufferedOutputStream中的flush,把緩衝區中的數據,刷新到文件中.(這裏一定要刷新)
5:釋放資源
【BufferedInputStream】字節緩衝輸入流 extends InputStream
作用:給基本字節輸入流增加一個緩衝區,提高基本字節輸入流的效率
繼承自父類的公共的成員方法
構造方法:
BufferedInputStream(InputStream in) 創建一個BufferedInputStream 並保存期參數,即輸入流 in,以便將來使用.
參數:
InputStream in: 字節輸入流,可以傳遞FileInputStream
參數傳遞的是哪個字節輸入流對象,就會給哪個字節輸入流對象增加一個緩衝區,提高該流的效率.
使用步驟:
1:創建FileInputStream對象,綁定數據源
2:創建BufferedInputStream對象,構造方法中傳入FileInputStream,提高FileInputStream的讀取效率.
3:使用BufferedInputStream中的方法 read,讀取文件
4:釋放資源
★ 總結:
字節流:操作的文件是非文本文件
字符流:操作的文件都是文本文件,一次讀取一個字符,可以讀取中文
文本文件:使用記事本打開,人能看懂的文件.