这是我的代码:
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)
如果有人可以帮助我。我会非常感激。
答案 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();
}
因此,您应该在初始化程序时删除文件(从代码中删除),或者应该能够处理文件已存在的情况。这取决于你想要的行为