正如其他人所说,还有其他专门设计用于读取文本行的类,例如 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. 一次读取一个字节非常慢 - 您应该将一个字节块读入数组缓冲区(例如一个字节[2048] 数组),然后遍历数组,当到达缓冲区数组的末尾时,从 RandomAccessFile 重新填充数组。3. 如果是处理 Unicode 字符,则需要一次读取和处理 2 个字节,而不是单个字节。
RandomAccessFile 非常强大,但是如果您可以使用 BufferedReader 之类的东西,那么使用它可能会更好,因为它会自动处理所有这些问题。