_056_緩衝輸入輸出字元流
阿新 • • 發佈:2018-12-11
===================
BufferedReader字元緩衝類 這個和之前的BufferedInputStream(緩衝輸入位元組流)不一樣,因為BufferedInputStream看起來沒什麼用 只是內部維護了一個數組而且,這個我們自己定義一個數組也可以實現,而且比它的效率還高 但是BufferedReader不僅僅如此,它即提高了效率,也有一個擴充套件功能
緩衝輸出字元流有一個擴充套件的方法 那麼就是newLine,具有換行的作用
public class Test2 { public static void main(String[] args) throws IOException { test2(); } // 使用傳統方式讀取 public static void test1() throws IOException { File file1 = new File("D:\\download\\document\\temp.txt"); FileReader fid = new FileReader(file1); BufferedReader bufferedReader1 = new BufferedReader(fid); StringBuilder sbd_1 = new StringBuilder(); char[] arr = new char[1024]; int length = 0; while ((length = bufferedReader1.read(arr)) != -1) { sbd_1.append(arr, 0, length);// 必須要長度,不然後面的那些空的陣列也會新增進來 } System.out.println(sbd_1); } // 使用BufferedReader的readline讀,推薦 public static void test2() throws IOException { File file1 = new File("D:\\download\\document\\temp.txt"); FileReader fid = new FileReader(file1); BufferedReader bufferedReader1 = new BufferedReader(fid); String contant = null; while ((contant = bufferedReader1.readLine()) != null) { System.out.println(contant); } } // 下面是自寫readLine public static String myReadLine(FileReader fileReader) throws IOException { int value = 0; StringBuilder stringBuilder1 = new StringBuilder(); while ((value = fileReader.read()) != -1) { if (value == '\r') { continue; } else if (value == '\n') {// 主要是靠這裡出去 break; } else { stringBuilder1.append((char) value); } } if (value == -1) {// 如果到了這裡,說明整個文字都被讀完了,因為我們沒有方法可以判斷文字已經讀完,就是說如果我們要迴圈遍歷全部的行 // 必須要給一個文字結束的條件,而read剛剛好就是一個判斷文字是否結尾的方法 return null; } return stringBuilder1.toString();// 既然到了這裡,那麼說明value是等於'\n' } }