作者lakegreen ( )
站内java
标题[问题] 读取档案的问题
时间Tue Aug 10 13:59:30 2010
需要从binary档案中一个byte一个byte的读出,然後判断内容做些处理之後透过网路送出
现在读档的部份,读出的东西和预期的不一样
谢谢tkcn大的指点,以下是修改後的部份code
-----------------------------------------------------
byte addrArray[]=new char[16];
File updateFile=new File(updateFileTextField.getText());
FileInputStream fileStream=new FileInputStream(updateFile);
Socket sock = serverSock.accept();
OutputStreamWriter writer = new OutputStreamWriter(sock.getOutputStream());
for(int i=0;i<16;i++){
addrArray[i]=(byte)fileStream.read();
System.out.print(Integer.toHexString(addrArray[i])+",");
}
writer.write(addrArray,0,16);
writer.flush();
------------------------------------------------------
档案中前16个bytes,在UltraEdit下看来是
00 01 00 00 00 00 00 FC 20 00 FB FF 00 03 D3 C8
接着下来是 00 03 D4 28.............
程式印出的结果是
0,1,0,0,0,0,0,fc,20,0,fb,ff,0,3,d3,c8
没有问题
不过丢出去的封包是
00 01 00 00 00 00 00 3f 20 00 3f 3f 00 03 3f 3f
正在寻找问题以及解决的方法
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.66.86.158
1F:→ ericinttu:先确认toHexString()传入参数的值域范围 08/10 14:13
2F:→ qrtt1:你想要的是 byte 还是 char !? 08/10 14:13
3F:→ lakegreen:我想要byte toHexString只是为了确认结果 08/10 14:19
4F:→ ericinttu:我觉得可能是signed integer的关系吧? 一定要弄成int吗? 08/10 14:35
弄成int只是因为read会回传int 最终目的是要把资料原封不动透过网路传送出去
5F:→ tkcn:应该先把 Reader 换成 InputStream 吧 08/10 14:39
把FileReader换成InputStream吗?
※ 编辑: lakegreen 来自: 210.66.86.158 (08/10 14:41)
不好意思之前说错,不是字元,是binary
※ 编辑: lakegreen 来自: 210.66.86.158 (08/10 14:44)
6F:→ tkcn:知道 Reader 和 InputStream 差在哪吗? #1A81YuwL 08/10 14:43
※ 编辑: lakegreen 来自: 210.66.86.158 (08/10 16:16)
7F:→ tkcn:Writer 也是一样呀...XD 08/10 16:48
8F:→ lakegreen:writer也不能用啊… 08/10 16:55
9F:→ tkcn:还有,你写出去的是 char 阵列,其实用 byte 阵列比较好 08/10 17:22
10F:→ lakegreen:嗯 其实我已经改用byte了 08/11 09:46
※ 编辑: lakegreen 来自: 210.66.86.158 (08/11 09:47)
11F:推 benqm300:改用byte XX = new char[16] ???这算有改吗? 08/12 11:27