我从一个简单的RandomAccessFile读取10行并打印每一行。文本文件中的确切行依次如下:
蓝色
绿色
气泡
干酪
百吉
拉链
糖果
鲸
猴
图表
当我逐行阅读时按顺序打印它们时我的输出是:
绿色
干酪
拉链
鲸
图表
我无法理解为什么我的方法会跳过文件中的每一行。我误解了RandomAccessFile的工作原理吗?我的方法如下:
RandomAccessFile file = new RandomAccessFile(FILEPATH, "rw");
read(file);
public static void read(RandomAccessFile t) throws IOException{
while (t.readLine()!=null) {
System.out.println(t.readLine());
}
}
答案 0 :(得分:4)
您正在呼叫readLine()
两次
while (t.readLine()!=null) {
System.out.println(t.readLine());
}
而是预先计算readLine()
;
String tmp;
while((tmp = t.readLine()) != null) {
System.out.println(tmp);
}
答案 1 :(得分:2)
试试这个:
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
每当你打电话给readlin()时,它就会转到下一行,这就是为什么你只打印出连线。
答案 2 :(得分:0)
使用RandomAccessFile时,您可以在任何搜索位置读取,而不是逐行读取以优化I / O性能。
RandomAccessFile raf = new RandomAccessFile("file","r");
raf.seek(info.getStartingIndex());//Maintain info while serializing obj
byte[] bytes = new byte[info.getRecordLength()];//length stored earlier similarly
raf.read(bytes);
ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(bis);
obj = ois.readObject();