我正在尝试按字节读取一些文件。问题是Java显示的字节数不同,我可以使用远十六进制编辑器读取。
使用Far读取字节: 00 00 00 17 00 00 00 29 00 00 00 99 00 00 00 9B
使用Java读取字节: 0 0 0 17 0 0 0 29 0 0 0 22 0 0 0 3a
Java代码:
while ((line = (byte) _br.read()) != -1) {
lines.add(line);
System.out.println("lines = " + Integer.toHexString(line));
}
答案 0 :(得分:1)
您过早地将read()
返回的整数转换为byte。这会导致溢出,并可能阻止文件检查的-1结束(在当前问题的基础上)。它说返回值的文档介于0到65535之间(不能用字节变量处理)。在java中,byte是8位值的符号,因此只要值大于0x7F就会出现问题。将line
变量类型更改为int,然后重试。