[問題] Java I/O 讀取不同 type 的 data stream

看板java作者 (muzfan)時間15年前 (2010/04/30 16:48), 編輯推噓1(104)
留言5則, 3人參與, 最新討論串1/3 (看更多)
我的程式必須要透過 Scoket 與不同平台的 Server 溝通, 送出一段 command 之後,會由 Server 端的程式(以 C 開發的) 回應資料。 回應的資料格式為: 狀態回應碼 圖片實際的bytes大小 圖片拍攝日期時間 換行符號 圖片的 binary data 我目前的做法是: 1. 利用 BufferedReader 去讀第一行的資訊(character stream) 執行 r.readLine(); 2. 利用 BufferedInputStream 去讀取圖片的 binary data 大概像這樣: PrintStream ps = new PrintStream(theSocket.getOutputStream()); ps.print(command + "\r\n"); BufferedInputStream in = new BufferedInputStream(theSocket.getInputStream()); BufferedReader r = new BufferedReader(new InputStreamReader(in)); r.readLine(); BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("image.png")); int i = 0; while ((i = in.read()) != -1) { out.write(i); } out.flush(); in.close(); out.close(); 執行的結果,可以成功讀取正確的 caracter stream 資料, 但是,儲存下來的 image.png 卻是不正確的 卡住好久了,不知道我哪邊有盲點或是錯誤? 希望各位大大不吝指正。 感謝萬分 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 130.95.99.105

04/30 22:34, , 1F
請用java debugger跑一次程式
04/30 22:34, 1F

04/30 22:38, , 2F
不同平台的換行符號也不一樣
04/30 22:38, 2F

05/01 15:12, , 3F
你可以參考 #1AgxSri9 我的寫法 保證沒問題..雖然回文有爭議
05/01 15:12, 3F

05/01 15:15, , 4F
但當年我是這樣透過傳送加密和簽章資料..收到在解密和驗證
05/01 15:15, 4F

05/01 21:28, , 5F
要記得檢查印地安問題喔 xd
05/01 21:28, 5F
文章代碼(AID): #1BsfbxRw (java)
文章代碼(AID): #1BsfbxRw (java)