У меня есть файл a.txt
с содержимым, написанным с помощью writeUTF()
,
Dog
Cat
Rat
Теперь, когда я перечитываю содержимое, я также печатаю положение указателя, и положение указателя неверно.
Код:
public static void main(String[] args) throws Exception
{
RandomAccessFile ra = new RandomAccessFile("a.txt", "rw");
System.out.println("Pointer: " + ra.getFilePointer());
ra.writeUTF("Dog\n");
ra.writeUTF("Cat\n");
ra.writeUTF("Rat");
ra.seek(0);
System.out.println(ra.readLine()+ " " + ra.getFilePointer());
ra.close();
}
Вывод:
Pointer: 0
Dog 6
1). Разве позиция указателя не должна быть 4
? Потому что после чтения Dog
его позиция будет 3
, а после чтения \n
она должна быть 4
. Как показывает 6
?
2). Кроме того, когда я читаю весь файл, он показывает позицию 17
. Но есть только 9
символов, 2
символов новой строки и 1
EOF (должны ли мы учитывать и это?).
3). Вместо Dog\n
, если я пишу \n
перед Cat
, например Dog
\nCat
в writeUTF()
, выводится другая позиция, которая будет 8
после чтения Dog
.
Код:
public static void main(String[] args) throws Exception
{
RandomAccessFile ra = new RandomAccessFile("a.txt", "rw");
System.out.println("Pointer: " + ra.getFilePointer());
ra.writeUTF("Dog");
ra.writeUTF("\nCat");
ra.writeUTF("\nRat");
ra.seek(0);
System.out.println(ra.readLine()+ " " + ra.getFilePointer());
ra.close();
}
Вывод:
Pointer: 0
Dog 8