Java 如何使用FileWriter写入同一CSV文件

Java 如何使用FileWriter写入同一CSV文件,java,filewriter,Java,Filewriter,我有一个简单的问题,我想不出怎么解决。我在不同的实例上运行了一个算法,并希望将结果输出到同一个Excel文件中 作为一个玩具示例,我编写了以下代码,但它不能正常工作 String DATADIR = "C:/Users/OneDrive/Desktop/"; for(int i =0; i<=2 ; i++){ File f = new File(DATADIR+ "myFile.csv"); // I first check if the file exists

我有一个简单的问题,我想不出怎么解决。我在不同的实例上运行了一个算法,并希望将结果输出到同一个Excel文件中

作为一个玩具示例,我编写了以下代码,但它不能正常工作

String DATADIR = "C:/Users/OneDrive/Desktop/";
for(int i =0; i<=2 ; i++){          
  File f = new File(DATADIR+ "myFile.csv"); // I first check if the file exists
  FileWriter mainWriter = null; // here there is a problem
    if(!f.exists() && !f.isDirectory()) { // If not, then I create the file
    FileWriter writer = new FileWriter(DATADIR+ "myFile.csv", true);
    mainWriter = writer; // I copy the file for the next iterations
    writer.write("This is my first line \n"); 
    writer.close();
    }else { //if file exists, then continue writing
        mainWriter.write(i+ "\n"); // as an trivial example, write the iterator
        mainWriter.close();
    }

String DATADIR=“C:/Users/OneDrive/Desktop/”;

对于(int i=0;i您将获得空指针异常,因为,如果文件可用,则转到else条件,并且filewriter没有初始化id。您不需要使用两个writer。在这里我发布一些代码,如果有帮助,请告诉我

String DATADIR = "C:/Users/OneDrive/Desktop/";
        for (int i = 0; i <= 2; i++) {
            File tmpDir = new File(DATADIR+" myFile.csv");
            if (!tmpDir.exists() && !tmpDir.isDirectory()){ //checking file availability
                tmpDir.createNewFile(); //create new file
            }
            FileWriter writer = new FileWriter(DATADIR+ "myFile.csv", true); //as mentioned if not available then create new file so here always available file
            if (i==0){
               writer.write("This is my first line \n"); //writing first line
                     }
            else {
                writer.write(i+ "\n"); //then appends all other data.
            }
            writer.close();

        }  
String DATADIR=“C:/Users/OneDrive/Desktop/”;

对于(int i=0;i为什么要关闭
writer
中间循环,并使用两个
FileWriter
s使代码复杂化?@jrook因此,如果我没有弄错,在使用
FileWriter
时,如果您不关闭文件,excel文件不会更新。是的,但您可以在完成所有编写和附加操作后关闭它。中途关闭它可能会导致您看到的问题您的
mainWriter
为空。因此,如果程序分支到
else
子句,它将看到一个空值并抛出NPE。最好在编写过程中初始化您的writer并保持其打开状态,然后关闭它。@jrook您是对的。感谢您的建议。您所说的话会让您更清楚这比我想做的要多。