gpt4 book ai didi

java - 如何在java中的方法退出时删除文件?

转载 作者:行者123 更新时间:2023-11-29 06:37:25 25 4
gpt4 key购买 nike

我想弄清楚如何确保在方法返回时删除在方法中创建的临时文件。我试过 file.deleteOnExit();,但那是针对程序停止的时间,而不是方法。我还尝试了 tryfinally block 。使用 finally block 是实现此目的的唯一方法吗?

public String example(File file) {
// do some random processing to the file here
file.canWrite();
InputStream() is = new FileInputStread(file);
// when we are ready to return, use the try finally block
try {
return file.getName();
} finally {
is.close();
file.delete();
}
}

我觉得很丑。有人有什么建议吗?

最佳答案

正如@BackSlash 在您的特定情况下所提到的,您可以在返回之前删除文件:

file.delete();
return "File processed!";

但是在常见情况下,如果 try block 中的代码可以抛出异常,那么您的方法看起来不错。您也可以使用面向方面的编程(例如使用 AspectJ),但在您的情况下它看起来有点矫枉过正。

您还可以使用 Java 7 的新特性来改进您的代码。Closable 的每个实例都将在 try block 的末尾关闭,例如:

try (
InputStream in = ...
) {
// read from input stream.
}

// that's it. You do not have to close in. It will be closed automatically since InputStream implements Closable.

因此,您可以创建包装 File 并实现 Closable 的类 AutoDeletableFileclose() 方法应该删除该文件。在此代码中将与您的代码完全一样:

try (
AutoDeletableFile file = new AutoDeletableFile("myfile.txt");
) {
// deal with file
}
// do nothing here. The file will be deleted automatically since its close() method actually deletes the file.

关于java - 如何在java中的方法退出时删除文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18489561/

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