当我尝试将信息写入文件时,我收到NullPointerException。任何人都可以帮我看看出了什么问题吗?
else if(response == 4){
System.out.println("Enter the name of the file to save items to: ");
saveFile = input.nextLine();
try {outfile = new PrintWriter(new FileWriter(saveFile+".txt"));}
catch (IOException err) {
outfile = null;
System.out.println("Error writing to file\n");
}
for (int i = 0; i < items.length; i++) {
outfile.print(items[i].getType() + "\n" + items[i].getName() + "\n" + items[i].getDescription() + "\n" + items[i].getCalories() + "\n" + items[i].getItemSpecifics());
}
答案 0 :(得分:2)
您正在将PrintWriter
对象(outfile
)设置为null
,然后尝试在其上执行print
方法。
这就是你获得NullPointerException
。
检查文档,您可以发现抛出IOException
的人实际上是FileWriter
构造函数。
Throws:
IOException - if the named file exists but is a directory rather than a regular file, does not exist but cannot be created, or cannot be opened for any other reason
所以,这可能是你的问题。如果没有,您可以尝试像这样创建它,您不需要FileWriter
部分:
outfile = new PrintWriter(saveFile+".txt");
我已经在我的计算机上测试了两种方式,但它确实有效。
另外,记得在完成文件写入后调用close()
方法,否则不会修改它。
答案 1 :(得分:0)
您粘贴的代码中可能有几个地方NullPointerException
:
outfile = null
,然后在它为空时尝试使用它。input
时,input.nextLine()
可能为null
致电items
items.length
可能为null
致电items[i]
items[i].getType()
可能为null
醇>
没有完整的堆栈跟踪很难说 - 调试它会是你最好的选择。异常也可能发生在此处调用的其他函数之一(getCalories()
等)