Ответ 1
RandomAccessFile раскрывает функцию:
seek(long pos)
Sets the file-pointer offset, measured from the beginning of this file, at which the next read or write occurs.
Привет, я пытаюсь открыть файл и читать только со смещения на определенную длину! Я прочитал эту тему: Как прочитать определенную строку с использованием определенного номера строки из файла на Java? там он сказал, что он не может читать определенную строку, не читая строки раньше, но мне интересно о байтах!
FileReader location = new FileReader(file);
BufferedReader inputFile = new BufferedReader(location);
// Read from bytes 1000 to 2000
// Something like this
inputFile.read(1000,2000);
Можно ли читать определенные байты из известного смещения?
RandomAccessFile раскрывает функцию:
seek(long pos)
Sets the file-pointer offset, measured from the beginning of this file, at which the next read or write occurs.
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();
Это должно быть хорошо, так как docs для FileInputStream#getChannel
говорят, что:
Изменение позиции канала, либо явно, либо путем чтения, изменит эту позицию файла потока.
Я не знаю, как этот метод сравнивается с RandomAccessFile
.