Как прочитать файл с определенным смещением в Java? - PullRequest
23 голосов
/ 12 марта 2012

Эй, я пытаюсь открыть файл и прочитать только со смещением на определенную длину!Я читал эту тему: Как прочитать определенную строку, используя определенный номер строки из файла в Java? там сказано, что невозможно прочитать определенную строку без чтения строк раньше, но я 'интересно про байты!

FileReader location = new FileReader(file);
BufferedReader inputFile = new BufferedReader(location);
// Read from bytes 1000 to 2000
// Something like this
inputFile.read(1000,2000);

Можно ли считывать определенные байты с известного смещения?

Ответы [ 2 ]

20 голосов
/ 12 марта 2012

RandomAccessFile предоставляет функцию:

seek(long pos) 
          Sets the file-pointer offset, measured from the beginning of this file, at which the next read or write occurs.
11 голосов

FileInputStream.getChannel().position(123)

Это еще одна возможность в дополнение к RandomAccessFile:

File f = File.createTempFile("aaa", null);
byte[] out = new byte[]{0, 1, 2};

FileOutputStream o = new FileOutputStream(f);
o.write(out);
o.close();

FileInputStream i = new FileInputStream(f);
i.getChannel().position(1);
assert i.read() == out[1];
i.close();
f.delete();

Это должно быть в порядке, поскольку документы для FileInputStream#getChannel говорят, что:

Изменение позиции канала, явно или путем чтения, изменит позицию файла этого потока.

Я не знаю, какоднако этот метод сравнивается с RandomAccessFile.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...