如何在Java中读取文件的最后n个字节

4

如何读取文件中最后n个字节,而不使用RandomAccessFile。

当写回文件时,我的文件的最后6个字节包含重要信息。我需要先写入原始文件,然后将最后6个字节附加在其他地方。

有什么建议吗?谢谢


我知道这一点。我在问如何存储最后几个字节,而不是整个文件。我想我无法理解逻辑。 - user1848712
4
为什么不使用RandomAccessFile - erickson
3个回答

5
你需要通过使用RandomAccessFile来完成。这个类的实例支持对随机访问文件进行读写操作。随机访问文件的行为就像在文件系统中存储的大型字节数组。
RandomAccessFile randomAccessFile = new RandomAccessFile(your_file, "r");
randomAccessFile.seek(your_file.length() - n); 
randomAccessFile.read(byteArray, 0, n);

3

试一下

    FileInputStream fis = new FileInputStream(file);
    fis.getChannel().position(fis.getChannel().size() - 6);
    byte[] a= new byte[6];
    fis.read(a);

3
你可以实现一个OutputStream,通过扩展FilterOutputStream来“装饰”当前流以保留最后六个写入的字节。当写入完成时,查询你的自定义装饰器获取最后六个字节。
实现可以使用一个简单的环形缓冲区来记录所有单字节写入,或记录每个块写入的最后六个字节。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接