主线程中的异常 - 如何解决此问题

时间:2013-11-20 20:04:40

标签: java

这是我的代码:

package net.james.filewrite;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

import net.james.game.WarGame;

public class NewWriting {
 public static FileWriter filewriter;
 public static WarGame wg = new WarGame();
 public static File f = new File("High Score.txt");


 public static void createFile(){
     try {
         filewriter = new FileWriter("High Score.txt", true);
         System.out.println("Creating file");
     } catch (IOException e) {
         e.printStackTrace();
     }
 }


 public static void write(){
     try {
         filewriter.write("hi"); //<< line 27
         filewriter.flush();
     }catch (IOException e) {
         e.printStackTrace();
     }
 }

 public static void fileExists(){
     if (!f.exists()){
         System.out.println("NOPE!!!");
         createFile();
         write();
         System.out.println("now it does!");
     }else{
         System.out.println("YEP!");
         write();
     }


 }
}

当我打电话给'写'方法时,它只是说:

线程“main”java.lang.NullPointerException中的异常     at net.james.filewrite.NewWriting.write(NewWriting.java:27)

如果有人可以帮助我。我会非常感激。

2 个答案:

答案 0 :(得分:0)

您正在filewriter方法中为createFile()分配值(仅在文件不存在时才会调用)。如果文件已存在createFile()将不会被调用,filewriter将保留null。在write()之内,您尝试调用filewriter.write(..),因为文件编写器为null而失败。

答案 1 :(得分:0)

如果您的文件f存在,createFile永远不会被调用,您永远不会实例化filewriter

if (!f.exists()){
    System.out.println("NOPE!!!");
    createFile();
    write();
    System.out.println("now it does!");
}
else
{
     System.out.println("YEP!");
     write();  
}

因此,您应该在初始化程序时删除文件(从代码中删除),或者应该能够处理文件已存在的情况。这取决于你想要的行为