从字节数组中检索数据

时间:2015-01-04 20:17:22

标签: java io

我试图实现tail程序并想要打印文件的最后n个字节。我使用了RandomAccessFile变量来存储文本文件中的数据。当我尝试检索数据并将其打印到控制台时,我得到的结果如下:

-n1
65109710979710979710810979710810510510979710910659711010510979711410011897114107109797114100119111108102106597114111110

如何从字节数组中正确检索数据?

这是我的代码:

RandomAccessFile raf = new RandomAccessFile(file, "r");
            byte[] b = new byte[n];
            raf.readFully(b, 0, n);
            for (int i = 0; i < n; i++) {
                System.out.print(b[i]);
            }

1 个答案:

答案 0 :(得分:2)

您正在打印byte值。要转换,例如要在String上打印的System.out.println字节数组,请尝试以下操作:

System.out.println(new String(b));

如果您希望将每个byte(如您的循环中)转换为可打印的char,您可以执行以下转换:

for (int i = 0; i < 10; i++) {
    char c = (char) (b[i] & 0xFF);
    System.out.print(c);
}

byte只是一个字节大小(8位)而Java中的char是16位(2个字节)。因此,打印的字节没有意义,它不是一个完整的字符。

有关详细信息,请参阅this link