看板 java 關於我們 聯絡資訊
今天在學習JAVA的IO, 有點混亂了 整理了一下目前理解狀況如下, 希望先進可以指點一下, 是否有不對的地方 初步印象: InputStream、OutputStream、Reader、Writer 是四個跟IO有關的抽象CLASS, 每個CLASS各自有多個子類繼承它 InputStream、Reader 都是負責輸入流的; OutputStream、Writer 都是負責輸出流的 除了 InputStream、OutputStream、Reader、Writer, 還有 File 類, 是處理檔案時會用 的... 差別: InputStream、OutputStream 處理BYTE類型/二進位檔案/8位元的流 Reader、Writer 處理字元串流/Character Stream/16位元的流 使用方式: 使用前要 import java.io. 進行輸入輸出前, 要先取得 InputStream(輸入來源) 或 OutputStream(輸出目的) 用完要 .close(); ---------------以上是對JAVA IO的初步了解, 不知有無誤解------------------------ -------------------------以下是問題------------------------------------ 看完講義, 要來寫練習時, 發現包來包去的寫法, 讓人好混亂啊 @@ 例如這段 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); BufferedWriter、OutputStreamWriter 不都是繼承 Writer 的子類嗎? 為什麼 Reader裡 還要再用另一個 Reader 呢? 去網上看了些說明, 整理如下... InputStreamReader、OutputStreamWriter的引數為Input、Output的檔名 InputStreamReader在讀取位元組資料後,可以將它轉換成字元資料;OuputStreamWriter 是將字元轉換成位元組資料。 是InputStream到Reader、OutputStream到Writer的橋樑。 所以說, InputStreamReader、OutputStreamWrite 是必須的囉, 要有它們才能轉成 BufferedReader可讀的, 把BufferedWriter輸出的東西轉成位元資料存入檔案 是醬子說嗎? 另外,還有 BufferedWriter output = new BufferedWriter(new FileWriter(file)); BufferedWriter bw = new BufferedWriter (new FileWriter(“test.txt”)); 這裡用FileWriter()是因為引入的是一個檔案嗎? 可以改成用 OutputStreamWriter(file)嗎? 也有看到醬子的: BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("ming.txt"))); 怎麼這麼多層啊? Orz 總之, 是不是, BufferedWriter 或 BufferedReader 在使用時, 都必須有個中介才行呢? 另外, 一定要跟 try catch 一起用嗎 它是註定會有EXCEPTION嗎, 還是只是要以防找不到檔的時后? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 134.2.251.20 ※ 編輯: marketcos 來自: 134.2.251.20 (01/23 04:18)
PsMonkey:不是註定會有 exception,只是你必須指定要怎麼處理他 01/23 04:36
LPH66:你的主要問題可以搜尋關鍵字「decorator pattern」 01/23 11:43
marketcos:好的, 非常謝謝! 01/24 00:41
kiwatami:我看完這段後打包成幾個method就拋到腦後了XD 02/12 20:44