FileWriter输出到csv文件是空白的

时间:2017-04-25 09:59:09

标签: java csv filewriter file-writing

FileWriter outfile = new FileWriter("ouput.csv", true); //true = append

        for(int len = 0; len < tempList.size(); len++) {
            LineItem tempItem = tempList.get(len);
            if ( len == 0 ) {
                lastTime = tempItem.getTimeEnd();
                tempItem.setStatus("OK");
                //out
                output( tempItem.toCSV(), outfile);
            } else {
                if ( tempItem.getTimeStart().compareTo(lastTime) <= 0 ) {
                    //WARN
                    if (!tempItem.getStatus().equals("OVERLAP")) {
                        tempItem.setStatus("WARN");
                    }

                } else {
                    //OK
                    //System.out.println( "OK  ;" + tempItem.toCSV());
                    if (!tempItem.getStatus().equals("OVERLAP")) {
                        tempItem.setStatus("OK");
                    }
                }
                // file out write
                output( tempItem.toCSV(), outfile);

                lastTime = tempItem.getTimeEnd();

            }

        }
    }

    private static void output(String line, FileWriter outfile) throws IOException {
        System.out.println(line);

        // Write each line to a new csv file
        outfile.write(line + "\n");

    }

为什么我的output.csv文件为0 kb且为空?但是当我打印到行时,我在控制台中看到每个字符串......

3 个答案:

答案 0 :(得分:2)

您没有关闭FileWriter

NB关于冲洗和关闭的建议是多余的。

答案 1 :(得分:0)

output( tempItem.toCSV(), outfile);之后,请添加以下声明。你忘记了flushClose自动为flush

outfile.close();

答案 2 :(得分:0)

当您flush(outfile)时,它将被写入文件。

当你close(outfile)时,它也会被自动刷新。有时你想在其他时间flush(),但通常没有必要。当你完成文件时,你应该总是关闭文件。

从Java 7开始,使用try-with-resources通常是一个好主意:

try(FileWriter outfile = new FileWriter("output.csv", true)) {
    // code that writes to outfile
}

由于FileWriter实现了Closeable,因此当执行离开此块时,它会自动调用outfile.close()