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

时间:2013-11-22 22:38:27

标签: java file byte bufferedreader

如何在不使用RandomAccessFile的情况下从文件中读取最后n个字节数。

我的文件中的最后6个字节包含重写文件时的重要信息。我需要编写原始文件,然后将最后6个字节附加到别处。

任何指导?感谢

3 个答案:

答案 0 :(得分:6)

您必须使用RandomAccessFile来执行此操作。
此类的实例支持读取和写入随机访问文件。随机访问文件的行为类似于存储在文件系统中的大量字节。

RandomAccessFile randomAccessFile = new RandomAccessFile(your_file, "r");
randomAccessFile.seek(your_file.length() - n); 
randomAccessFile.read(byteArray, 0, n);

答案 1 :(得分:2)

您可以通过扩展OutputStream来实现“装饰”当前流的FilterOutputStream,以保留写入的最后六个字节。写完成后,查询自定义装饰器最后六个字节。

该实现可以使用一个简单的环形缓冲区来记录所有单字节写入,或者直到每个块写入的最后六个字节。

答案 2 :(得分:2)

试试这个

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