Java中的流可以分為高級流和低級流兩種類型。高級流以更高層的抽象方式處理數據流,而低級流偏向于底層的實現細節。
// 示例代碼 - 高級流 import java.io.*; public class HighLevelStreamDemo { public static void main(String[] args) { try { BufferedReader br = new BufferedReader(new FileReader("test.txt")); String line = br.readLine(); while (line != null) { System.out.println(line); line = br.readLine(); } br.close(); } catch (IOException e) { e.printStackTrace(); } } }
上面的示例代碼使用了高級流BufferedReader,通過封裝了底層的低級流FileReader實現了逐行讀取文本文件的功能。BufferedReader提供了比FileReader更豐富的方法,例如readLine()方法可以一次讀取一行數據。
// 示例代碼 - 低級流 import java.io.*; public class LowLevelStreamDemo { public static void main(String[] args) { try { FileInputStream fis = new FileInputStream("test.txt"); byte[] buffer = new byte[1024]; int length = fis.read(buffer); while (length != -1) { System.out.println(new String(buffer, 0, length)); length = fis.read(buffer); } fis.close(); } catch (IOException e) { e.printStackTrace(); } } }
上面的示例代碼使用了低級流FileInputStream,通過一次讀取若干個字節返回的長度并自行解析實現了逐字節或逐塊讀取文件的功能。FileInputStream的底層實現也是通過調用底層操作系統接口實現的。
需要注意的是,高級流和低級流并非完全獨立。在使用高級流時,底層依然會使用一些低級流的操作來完成相應的功能。高級流和低級流是相輔相成的,開發者需要結合具體情況選擇使用。