您好我一直在使用Buffered Reader尝试读取文本文件并打印文本文件的行数。我的代码是这样的......
File parent = new File("/Desktop/Test Folder");
File text = new File(parent, "/text.txt");
FileWriter fw;
FileReader fr;
BufferedWriter write;
BufferedReader read;
if (!parent.exists()) {
parent.mkdir();
}
try {
text.createNewFile();
} catch (Exception ex) {
System.err.println("Error creating file");
}
try {
fw = new FileWriter(text);
fr = new FileReader(text);
write = new BufferedWriter(fw);
read = new BufferedReader(fr);
} catch (Exception ex) {
System.err.println("Error trying to write or read file");
}
System.out.println("Writing to file...");
try {
write.write("String number one.\n");
write.write("String number two.\n");
List<String> lines = new LinkedList<String>();
String line = read.readLine();
while (line != null) {
lines.add(line);
line = read.readLine();
}
System.out.printf("Number of lines is %d.\n", lines.size());
write.flush();
write.close();
} catch (Exception ex) {
System.err.println("Error writing to file");
}
当我运行它时,它表示列表行中有0个元素。有帮助吗?我在某个地方犯了无人的错误,还是我使用了错误的方法?我是业余爱好者所以我怀疑错误是显而易见的。无论如何,任何人都可以给我一些帮助吗?
答案 0 :(得分:1)
您是否尝试在writer.flush();
之前移动readLine()
来电?
来自Writer.flush()
的{{3}}:
冲洗流。如果流已从缓冲区中的各种write()方法保存了任何字符,请立即将它们写入预期目标
因此,如果您在刷新之前阅读文件可能是空的!
答案 1 :(得分:0)
你应该在实际读数之前放置Writer的flush()和close()。您要做的是将文件用作管道。这不是你想做的事情。