gpt4 book ai didi

java - 如何打开、写入和保存文件,同时避免错误?

转载 作者:行者123 更新时间:2023-12-01 17:35:31 25 4
gpt4 key购买 nike

我需要删除程序中的一个文件。我的解决方案是使用一个 erase() 方法来执行此操作,如下所示:

public static void erase(String string) {
FileWriter fw = null;
try {
fw = new FileWriter(string);
fw.write(new String());
} catch (IOException ie) {
e.printStackTrace();
} finally {
fw.flush();
fw.close();
}
}

这里有几个问题:

  • 如果fw未正确初始化(无论出于何种原因,丢失文件,无效权限等),那么当我尝试在finally中关闭它时 block ,有一个 NullPointerException。

  • 如果我没有finally block ,那么我可能会因上述原因抛出NullPointerException。

  • 如果我在 try block 内关闭文件,那么如果文件正确打开但未正确写入,我可能会泄漏资源。

我还忽略了哪些其他问题以及如何强化此方法?

最佳答案

您可以将 finally 功能包装在 if 语句中:

if(fw != null){
fw.close();
}

这将确保如果文件曾经打开过,那么它将被关闭。如果它一开始就没有打开,那么它不会做任何事情,这正是您想要的。

另外,我不确定它是否就像发布一样,但通常不建议只在 catch block 中打印堆栈跟踪并继续(“吞掉”异常)。您确实应该让异常被抛出,因为这可能会隐藏错误并使跟踪它们变得非常困难。

编辑:请参阅下面的评论。

关于java - 如何打开、写入和保存文件,同时避免错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6769972/

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