在java中读取文件错误

时间:2012-03-23 21:36:56

标签: java io bufferedreader

您好我一直在使用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个元素。有帮助吗?我在某个地方犯了无人的错误,还是我使用了错误的方法?我是业余爱好者所以我怀疑错误是显而易见的。无论如何,任何人都可以给我一些帮助吗?

2 个答案:

答案 0 :(得分:1)

您是否尝试在writer.flush();之前移动readLine()来电?

来自Writer.flush()的{​​{3}}:

  

冲洗流。如果流已从缓冲区中的各种write()方法保存了任何字符,请立即将它们写入预期目标

因此,如果您在刷新之前阅读文件可能是空的!

答案 1 :(得分:0)

你应该在实际读数之前放置Writer的flush()和close()。您要做的是将文件用作管道。这不是你想做的事情。