[問題] Java I/O 讀取不同 type 的 data stream
我的程式必須要透過 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
04/30 22:34, 1F
→
04/30 22:38, , 2F
04/30 22:38, 2F
推
05/01 15:12, , 3F
05/01 15:12, 3F
→
05/01 15:15, , 4F
05/01 15:15, 4F
→
05/01 21:28, , 5F
05/01 21:28, 5F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 3 篇):