使用Java按字节读取文件的非预期字节

时间:2012-05-21 13:14:39

标签: java file

我正在尝试按字节读取一些文件。问题是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));
}

1 个答案:

答案 0 :(得分:1)

您过早地将read()返回的整数转换为byte。这会导致溢出,并可能阻止文件检查的-1结束(在当前问题的基础上)。它说返回值的文档介于0到65535之间(不能用字节变量处理)。在java中,byte是8位值的符号,因此只要值大于0x7F就会出现问题。将line变量类型更改为int,然后重试。