Как утверждают некоторые другие люди, существуют другие классы, специально предназначенные для чтения строк текста, например BufferedReader.Однако, если вам необходимо использовать RandomAccessFile, вы можете читать строки текста, но вам нужно программно найти, где заканчивается 1 строка и начинается другая строка ...
Простой пример может быть ...
RandomAccessFile raf = new RandomAccessFile("c:\test.txt","r");
String line = "";
while (raf.available()){
byte b = raf.read();
if (b == '\n'){
// this is the end of the current line, so prepare to read the next line
System.out.println("Read line: " + line);
line = "";
}
else {
line += (char)b;
}
}
Это базовый строительный блок для считывателя, который ищет конец каждой строки.
Если вы собираетесь пойти по пути использования RandomAccessFile, вы можете начать с этой платформы,но вам нужно знать о некоторых недостатках и недостатках, таких как ... 1. Unix и Windows используют разные линейные маркеры - вам нужно искать '\ n', '\ r' и их комбинациюоба из них 2. Чтение одного байта за один раз очень медленное - вы должны прочитать блок байтов в буфер массива (например, массив byte [2048]), а затем выполнить итерацию по массиву, пополняя массив из RandomAccessFile, когдаВы достигаете конца буферного массива.3. Если вы имеете дело с символами Юникода, вам нужно читать и обрабатывать 2 байта за раз, а не отдельные байты.
RandomAccessFile очень мощный, но если вы можете использовать что-то вроде BufferedReader, то вамвероятно, гораздо лучше использовать это вместо этого, поскольку он автоматически решает все эти проблемы.