java - 如何将结果保存到Excel文件或csv文件?

标签 java database csv

我使用以下代码提取一些数据并将其保存到 CSV 文件。但现在的问题是,程序将数据写入 CSV 文件,每当代码再次运行时,数据就会被删除,旧结果将被新结果替换! 问题是,有没有办法保存结果并将新结果存储在新行中?如果是的话该怎么做?

这是我的代码:

 private void writeReport() {
    BufferedWriter out = null;
   try {
        FileWriter fstream = new FileWriter("out.csv");
        out = new BufferedWriter(fstream);
        out.write("File Name;");
        out.write("Total Lines of Code;");
        out.write("Executable Lines;");
        out.write("Lines of Comments;");
        out.write("Trivial Lines;");
        out.write("Empty Lines;");
        out.write("Code Complexity;");
        out.write("Number of Files;"); //to be changed to numver of files 
        out.write("Average File Complexity;"); //to be changed to averag file complexity
        out.write("Comment Percentage;"); //total
        out.write("Total Lines of Test Code;");
        out.write("Total Comments in Tests;");
        out.write("Total Trivial Lines in Tests;");
        out.write("Total Empty Lines in Tests;");
        out.write("Total Number of Test Files;");
        out.write("Comment Presentage in Test;");

        out.write(System.getProperty("line.separator"));

      //  for (int i = 0; i < newFiles.getNrOfFiles(); i++) {
            out.write("test" + ";");
        //    out.write(newFiles.getParser(i).getSourceFile().getName()+ ";");
            out.write(String.valueOf(newFiles.sumLinesOfCode()) + ";");
            out.write(String.valueOf(newFiles.sumLinesOfStatements()) + ";");
            out.write(String.valueOf(newFiles.sumLinesOfComments()) + ";");
            out.write(String.valueOf(newFiles.sumTrivialLines()) + ";");
            out.write(String.valueOf(newFiles.sumEmptyLines()) + ";");
            out.write(String.valueOf(newFiles.sumComplexity())+ ";");
            out.write(String.valueOf(newFiles.getNrOfFiles()) + ";");
            out.write(String.valueOf(newFiles.sumAvgComplexity()) + ";");
            out.write(String.valueOf((100 * newFiles.sumLinesOfComments()) / newFiles.sumLinesOfCode() + "%") + ";");

            out.write(System.getProperty("line.separator"));

        //Close the output stream
        out.close();
    } catch (Exception e) {
        System.err.println("Error: " + e.getMessage());
      //  return;
    }
}

最佳答案

判断文件是否已经存在

File file = new File("out.csv");
boolean exists = file.exists();

如果文件存在,则以附加模式打开编写器

FileWriter fstream = new FileWriter(file, exists /*=append*/);

仅当文件尚不存在时才写入 header 。

if (!exists) {
    out.write("File Name;");
    ...
    out.write(System.getProperty("line.separator"));
}
// write new rows

此外,当您使用 PrintWriter 时,有些事情会变得更容易:

PrintWriter out;
...
PrintWriter out = new PrintWriter(new BufferedWriter(fstream));
...
out.println(); // easier than out.write(System.getProperty("line.separator"));

关于java - 如何将结果保存到Excel文件或csv文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36630895/

相关文章:

java - Struts2无法判断拦截器是否工作

java - JDBC 检查连接是否可以保证它将无错误地提交

java - 如何在 Android 中通过名称获取图像资源?

java - 从 csv 读取值并将占位符替换到模板中

java - 如何使用jsp和servlet将多个csv文件上传到mysql数据库?

android - 在android中搜索长列表

java - 执行者没有运行所有线程。

java - 远程数据库连接长时间打开

PHP 在建立数据库连接时包含错误

mysql - 在数据库中实现相互关联的元组的最佳方法,例如零件交换汽车