「Java 中字符是 Unicode 雙字節,InputStream 處理字節,不適合處理字符文本」——這句話的含義:
Reader/Writer 是橋樑。// 字節流 → 字符流
InputStream is = new FileInputStream("a.txt");
Reader reader = new InputStreamReader(is, "UTF-8"); // 指定編碼
BufferedReader br = new BufferedReader(reader);
String line = br.readLine(); // 直接讀字符行
若直接用 InputStream.read() 讀中文,會按字節拆分導致亂碼;轉換流自動按編碼組裝字符。
FileReader、BufferedReader、PrintWriter)。new InputStreamReader(is, StandardCharsets.UTF_8),避免平台預設編碼差異。理解「字符在內存,字節在外部,編碼是橋樑」是 Java I/O 入門關鍵。