作者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
1F:→ pico2k:请用java debugger跑一次程式 04/30 22:34
2F:→ pico2k:不同平台的换行符号也不一样 04/30 22:38
3F:推 reon:你可以参考 #1AgxSri9 我的写法 保证没问题..虽然回文有争议 05/01 15:12
4F:→ reon:但当年我是这样透过传送加密和签章资料..收到在解密和验证 05/01 15:15
5F:→ TonyQ:要记得检查印地安问题喔 xd 05/01 21:28