[問題] JAVA輸入輸出觀念

看板java作者 (marketcos)時間11年前 (2014/01/23 03:22), 編輯推噓3(301)
留言4則, 4人參與, 最新討論串1/1
今天在學習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)

01/23 04:36, , 1F
不是註定會有 exception,只是你必須指定要怎麼處理他
01/23 04:36, 1F

01/23 11:43, , 2F
你的主要問題可以搜尋關鍵字「decorator pattern」
01/23 11:43, 2F

01/24 00:41, , 3F
好的, 非常謝謝!
01/24 00:41, 3F

02/12 20:44, , 4F
我看完這段後打包成幾個method就拋到腦後了XD
02/12 20:44, 4F
文章代碼(AID): #1Iu1fT4w (java)
文章代碼(AID): #1Iu1fT4w (java)