Java 使用PrintWriter打印数组
我有一个名为directory的数组,其中包含许多directoryEntry,每个directoryEntry由一个name和telno组成。现在我需要将目录中的每个目录条目打印到文本文件中。 这是我尝试过的方法,但是我得到了错误:未报告的异常IOException;必须被抓住或宣布被抛出 我的代码:Java 使用PrintWriter打印数组,java,arrays,printstream,Java,Arrays,Printstream,我有一个名为directory的数组,其中包含许多directoryEntry,每个directoryEntry由一个name和telno组成。现在我需要将目录中的每个目录条目打印到文本文件中。 这是我尝试过的方法,但是我得到了错误:未报告的异常IOException;必须被抓住或宣布被抛出 我的代码: public void save() { PrintWriter pw = new PrintWriter(new FileWriter("directory.txt", true));
public void save() {
PrintWriter pw = new PrintWriter(new FileWriter("directory.txt", true));
for (DirectoryEntry x : theDirectory) {
pw.write(x.getName());
pw.write(x.getNumber());
pw.close();
}
}
在此问题上的任何帮助都将不胜感激 修改后的代码应如下所示:
public void save() {
PrintWriter pw=null;
try{
pw = new PrintWriter(new FileWriter("directory.txt", true));
for (DirectoryEntry x : theDirectory) {
pw.write(x.getName());
pw.write(x.getNumber());
}
}
catch(IOException e)
{
e.printStackTrace();
}
finally
{
pw.close();
}
}
正如Jon Skeet所提到的,这里的其他答案有一些缺陷,如果您使用Java 7或更高版本,这可能就是您想要的:
public void save() {
try (PrintWriter pw = new PrintWriter(new FileWriter("directory.txt", true))) {
for (DirectoryEntry x : theDirectory) {
pw.write(x.getName());
pw.write(x.getNumber());
}
}
catch (IOException ex)
{
// handle the exception
}
}
您了解已检查的异常吗?另请阅读注意,您应该使用try with resources语句或try/finally语句在结尾关闭您的编写器,而不是在循环中。@JonSkeet我现在将阅读这些内容,谢谢。是的,它也会运行良好,但您所说的很好。谢谢,我已经修改了我的答案。我绝不会建议像那样使用
catch(Exception)
。。。我们不知道OP是否应该声明他们的方法可以抛出IOException。。。至少它应该捕获IOException。(我也不会使用FileWriter或PrintWriter,但是…@Jon Skeet,通常我会处理大多数异常,但实际上我忘了提到PrintWriter类的IOException异常。你是说你经常捕获异常
?哎呀@Jon Skeet,是的,我不记得大多数异常是由语句引发的,所以我从IDE(Eclipse)获得帮助,或者我通常使用异常。