Как записать в тот же файл CSV с FileWriter - PullRequest
1 голос
/ 10 октября 2019

У меня есть простой вопрос, который я не мог понять, как решить. Я запускаю алгоритм для разных экземпляров и хочу вывести результаты в один файл 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();
    }

Очевидно, что есть несколько проблем, но я получаю исключение нулевой точки. Я был бы очень признателен, если бы кто-нибудь дал мне подсказку / направление.

1 Ответ

1 голос
/ 10 октября 2019

вы получаете исключение нулевого указателя, потому что, если файл доступен, переходите к условию else и там нет инициализации для filewriter. Вам не нужно использовать два 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();

        }  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...