首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java IO 體系全景筆記:字節流、字符流、轉換與選型指南

     編輯:Java 相關知識

核心分類

維度字節流字符流
處理單元1 Byte2 Bytes (Unicode char)
基類InputStream / OutputStreamReader / Writer
典型子類FileInputStream, ByteArrayInputStream...FileReader, CharArrayReader...
適用場景二進制、非文本、不確定編碼純文本(含中文)、已知編碼
效率單字節操作緩衝區批量操作,更高

字節流詳細體系

InputStream 族系

  • ByteArrayInputStream:內存 byte[] 作為輸入源
  • StringBufferInputStream:已棄用,無法正確轉換字符,改用 StringReader
  • FileInputStream:文件讀取,三種構造器(File/FileDescriptor/String 路徑)
  • PipedInputStream:線程間管道通信(接收端),配合 PipedOutputStream
  • SequenceInputStream:合併多個 InputStream 為一個(Enumeration 或雙參構造)

OutputStream 族系

  • ByteArrayOutputStream:內存緩衝區自動擴容,toByteArray()/toString() 取數據
  • FileOutputStream:文件寫入,支持追加模式
  • PipedOutputStream:管道發送端

字符流詳細體系

Reader 族系

  • CharArrayReader:char[] 源
  • StringReader:String 源
  • FileReader:文件字符讀取(默認編碼)
  • PipedReader:管道字符接收

Writer 族系

  • CharArrayWriter、StringWriter、FileWriter、PipedWriter —— 分別對應上述 Reader

雙向轉換橋樑

  • InputStreamReader:字節流 → 字符流(指定編碼),建議外層包 BufferedReader 提升效率
  • OutputStreamWriter:字符流 → 字節流(指定編碼),內含 CharToByteConverter

鍵盤輸入整數示例

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int n = Integer.parseInt(s);

Java IO 選型決策樹(六步法)

  1. 數據格式:二進制 → Stream 系;文本 → Reader/Writer 系
  2. 方向:輸入 → InputStream/Reader;輸出 → OutputStream/Writer
  3. 是否需轉換:Stream ↔ Reader/Writer 用 InputStreamReader/OutputStreamWriter
  4. 數據源/去向:文件/byte[]/char[]/String/網絡/管道 → 選對應具體類
  5. 是否緩衝:高頻讀寫必加 BufferedInputStream/BufferedReader 等
  6. 是否格式化輸出:需格式化用 PrintStream/PrintWriter

特殊需求類

  • 對象序列化:ObjectInputStream/ObjectOutputStream
  • 進程間通信:Pipe 系列
  • 合併輸入:SequenceInputStream
  • 回退/行號:PushbackInputStream/LineNumberReader
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved