gpt4 book ai didi

java - 写入文件 : IOException: Stream closed

转载 作者:行者123 更新时间:2023-11-29 05:18:44 28 4
gpt4 key购买 nike

我无法弄清楚为什么我的代码会出现上述错误。每次调用该方法时,我都会创建一个 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();
}
}
}
}

如有任何帮助,我们将不胜感激。

最佳答案

BufferedWriter 包装目标 Writer。当您close() 它时,它会尝试在关闭它之前刷新 底层目标Writer

在您的代码中,您先在目标 FileWriter 上调用 close(),然后再在 BufferedWriter 上调用 close .当 BufferedWriter#close() 尝试调用 FileWriter 上的 flush 时,FileWriter 已经关闭,因此抛出异常。

您需要先关闭 BufferedWriter。更好的是,使用 try-with-resources

try (FileWriter write = new FileWriter(spawns, true); BufferedWriter out = new BufferedWriter(write);) {

关于java - 写入文件 : IOException: Stream closed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25586311/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com