1. 程式人生 > 實用技巧 >java I/O流

java I/O流

一。分類與區別

1.根據資料流的方向分為 輸出流和輸入流

2.根據處理資料單位分為 位元組流和字元流,

 1字元=2位元組

 位元組流:處理所有型別的資料,如影象,視訊,以及PPT,Word型別的檔案,使用位元組流時可能會出現中文亂碼,型別為(byte),直接操作檔案,沒有快取區,不用呼叫close()也能輸出資訊

 字元流:處理純文字,如.txt檔案,不會出現中文亂碼,型別為(String),輸出到緩衝區,只有呼叫close()才能輸出資訊,否則呼叫flush()方法。

 緩衝區:緩衝區是一段特殊的記憶體區域,很多情況下當程式需要頻繁地操作一個資源(如檔案或資料庫)則效能會很低,所以為了提升效能就可以將一部分資料暫時讀寫到快取區,以後直接從此區域中讀寫資料即可,這樣就顯著提升了性。

 OutputStreamWriter(OutStreamout):將位元組流以字元流輸出。

 InputStreamReader(InputStreamin):將位元組流以字元流輸入

3.根據功能分為節點流和處理流,

節點流:可以從或向一個特定的地方(節點)讀寫資料,如:FileReader

 處理流(用來包裝節點流):是對一個已存在的流的連線和封裝,通過所封裝的流的功能呼叫實現資料讀寫。如BufferedReader。

二。常用類

1. File(檔案特徵與管理):File類是對檔案系統中檔案以及資料夾進行封裝的物件,可以通過物件的思想來操作檔案和資料夾。 File類儲存檔案或目錄的各種元資料資訊,包括檔名、檔案長度、最後修改時間、是否可讀、獲取當前檔案的路徑名,判斷指定檔案是否存在、獲得當前目錄中的檔案列表,建立、刪除檔案和目錄等方法。

2. InputStream(二進位制格式操作):抽象類,基於位元組的輸入操作,是所有輸入流的父類。定義了所有輸入流都具有的共同特徵。

3. OutputStream(二進位制格式操作):抽象類。基於位元組的輸出操作。是所有輸出流的父類。定義了所有輸出流都具有的共同特徵。

4.Reader(檔案格式操作):抽象類,基於字元的輸入操作。

5. Writer(檔案格式操作):抽象類,基於字元的輸出操作。

6. RandomAccessFile(隨機檔案操作):一個獨立的類,直接繼承至Object.它的功能豐富,可以從檔案的任意位置進行存取(輸入輸出)操作。

三。用法

3.1位元組流輸出
File file = new File("H:" + File.separator + "test.txt");
OutputStream outputStream = new FileOutputStream(file);
String str = "髮夾好,。得分機會";
byte[] bytes = str.getBytes();
outputStream.write(bytes);
outputStream.close();

3.2字元流輸出
File file = new File("H:" + File.separator + "test.txt");
Writer writer = new FileWriter(file);
writer.write("反倒是哦分和第四fdsj5888");
writer.close();

3.3.字元輸入流
File file = new File("H:" + File.separator + "test.txt");
Reader reader = new FileReader(file);
int num = 0;
num = reader.read();
while ((num = reader.read()) != -1) {
   System.out.println((char) num);
}
reader.close();
3.4位元組流輸出處理中文亂碼
File file = new File("H:" + File.separator + "test.txt");
FileInputStream fileInputStream = new FileInputStream(file);
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream,"UTF-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String line=null;
while ((line=bufferedReader.readLine())!=null){
System.out.println(line);
}
file.delete();
bufferedReader.close();
inputStreamReader.close();

參考文件

https://www.cnblogs.com/FORCASH/p/9068582.html

https://blog.csdn.net/sinat_37064286/article/details/86537354