Mic*_*ift 2 java ioexception filewriter
我无法弄清楚为什么我的代码会出现上述错误。每次调用该方法时,我都会创建 FileWriter 和 BufferedWriter 的新实例,但显然流已经关闭。
public static void addSpawn(Location spawn)
{
File spawns = new File("spawns.dat");
FileWriter write = null;
BufferedWriter out = null;
try
{
write = new FileWriter(spawns, true);
out = new BufferedWriter(write);
out.write(locToStr(spawn));
out.newLine();
}
catch(Exception e)
{
System.out.println("Error writing spawn file: " + e.getMessage());
}
finally
{
if(write != null)
{
try
{
write.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
if(out != null)
{
try
{
out.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激。
BufferedWriter包裹一个目标Writer。当您close()执行此操作时,它会在关闭目标之前尝试访问flush基础目标Writer。
在您的代码中,您先调用close()目标FileWriter,然后close再调用BufferedWriter. 当BufferedWriter#close()尝试调用flush时FileWriter,它FileWriter已经关闭并因此引发异常。
你会想先关闭BufferedWriter。更好的是,使用try-with-resources
try (FileWriter write = new FileWriter(spawns, true); BufferedWriter out = new BufferedWriter(write);) {
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7088 次 |
| 最近记录: |