Буферизированные считыватели предназначены для последовательного чтения файла. То, что вы ищете, это java.io.RandomAccessFile , и затем вы можете использовать seek()
, чтобы доставить вас туда, куда вы хотите в файле.
Устройство чтения с произвольным доступом реализовано так:
try{
String fileName = "c:/myraffile.txt";
File file = new File(fileName);
RandomAccessFile raf = new RandomAccessFile(file, "rw");
raf.readChar();
raf.seek(0);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
"rw"
- символ режима, который подробно описан здесь .
Причина, по которой устройства чтения с последовательным доступом настроены таким образом, заключается в том, что они могут реализовывать свои буферы и что вещи не могут быть изменены под их ногами. Например, программа чтения файлов, которая предоставляется буферизованному читателю, должна работать только с этим буферизованным читателем. Если было другое местоположение, которое могло повлиять на него, у вас могла бы быть несовместимая операция, поскольку один читатель продвинул свое положение в читателе файла, в то время как другой хотел, чтобы он оставался тем же самым, теперь вы используете другой читатель, и это находится в неопределенном местоположении.