作者muzfan (muzfan)
看板java
標題[問題] Java I/O 讀取不同 type 的 data stream
時間Fri Apr 30 16:48:56 2010
我的程式必須要透過 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
→ pico2k:請用java debugger跑一次程式 04/30 22:34
→ pico2k:不同平台的換行符號也不一樣 04/30 22:38
推 reon:你可以參考 #1AgxSri9 我的寫法 保證沒問題..雖然回文有爭議 05/01 15:12
→ reon:但當年我是這樣透過傳送加密和簽章資料..收到在解密和驗證 05/01 15:15
→ TonyQ:要記得檢查印地安問題喔 xd 05/01 21:28