java.lang.NullPointException с использованием FileWriter - PullRequest
0 голосов
/ 29 мая 2018

Я пишу во вновь созданный текстовый файл в конструкторе класса, используя BufferedWriter.Класс создает текстовый файл, а затем добавляет к нему предварительный текст, чтобы операции чтения не возвращали ошибку.Однако, когда я пытаюсь добавить этот предварительный текст, в частности, используя writeHigh в методе ниже, я получаю java.lang.NullPointerException.Я не думаю, что это как-то связано со строкой, которую я передаю, но я также пытался изменить свои экземпляры writeHigh, но ничего не сделал.Я надеялся, что кто-то может знать, в чем причина этой ошибки.Трассировка стека не помогает.

    try
    {   
        //New buffered writters that can write to the specified files.
        writeHigh = new BufferedWriter(new FileWriter(HIGH_SCORE_PATH, false));

        //highScore = Integer.parseInt(readScore.readLine());
    }
    catch(FileNotFoundException e) //If reading from these files fails because they don't yet exist...
    {
        File highFile = new File(HIGH_SCORE_PATH); //Create a new high score file, this is the first time the game has been played.

       try
       {
           highFile.createNewFile();
           writeHigh.write("0000"); //This line is throwing the error
       }
       catch(IOException i)
       {
           i.printStackTrace();
       }
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }

Ответы [ 3 ]

0 голосов
/ 29 мая 2018

кажется, что у вас есть "FileNotFoundException" в первом блоке попытки.Эта точка «writeHigh» является нулевой, и вы не устанавливаете другое значение перед вызовом «writeHigh.write»

0 голосов
/ 29 мая 2018

Эта строка дает вам NPE

writeHigh.write("0000");

И вы достигнете этой строки, только если вы перехватили исключение FileNotFoundException.Это означает, что эта строка вызвала это исключение

writeHigh = new BufferedWriter(new FileWriter(HIGH_SCORE_PATH, false));

Если оно выдало исключение, это означает, что оно не удалось выполнить, тогда writeHigh не был создан.Так что пишите High is null.И поэтому writeHigh.write("0000"); бросьте NPE.


Я думаю, вы хотели сделать

highFile.write("0000");
0 голосов
/ 29 мая 2018

если это не удалось

writeHigh = new BufferedWriter(new FileWriter(HIGH_SCORE_PATH, false));

writeHigh позже null

...