如何在不使用RandomAccessFile的情况下从文件中读取最后n个字节数。
我的文件中的最后6个字节包含重写文件时的重要信息。我需要编写原始文件,然后将最后6个字节附加到别处。
任何指导?感谢
答案 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);