2013-11-22 4 views
2

Как я могу прочитать последнее n количество байтов из файла без использования RandomAccessFile.Как читать последние «n» байты файла в Java

Последние 6 байтов в моих файлах содержат важную информацию при записи файлов назад. Мне нужно написать оригинальные файлы, а затем добавить последние 6 байтов в другое место.

Любые указания? Спасибо

+0

Я знаю, что. Я спрашиваю, как хранить последние байты, а не хранить весь файл. Думаю, я не могу обойти логику – user1848712

+4

Почему вы не используете «RandomAccessFile»? – erickson

ответ

6

Вы должны сделать это, используя RandomAccessFile.
Экземпляры этого класса поддерживают чтение и запись в файл произвольного доступа. Файл с произвольным доступом ведет себя как большой массив байтов, хранящихся в файловой системе.

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

Вы могли бы реализовать OutputStream, что «украсят» ваш текущий поток за счет расширения FilterOutputStream до сохраняет последние шесть байтов в письменном виде. Когда запись завершена, запросите свой собственный декоратор за последние шесть байтов.

Реализация может использовать простой кольцевой буфер, который записывает все однобайтовые записи или до последних шести байтов каждой записи блока.

2

попробовать это

FileInputStream fis = new FileInputStream(file); 
    fis.getChannel().position(fis.getChannel().size() - 6); 
    byte[] a= new byte[6]; 
    fis.read(a); 
Смежные вопросы