java - 如果被进程锁定,如何在Java中删除文件?
问题描述
我决定就此发布一个新问题,因为现有的帖子都没有给我带来解决方案。我的是一个 Spring Boot 应用程序,这里是服务:
public String fetchPrediction(MultipartFile file) throws IOException, InterruptedException {
File convFile = new File( System.getProperty("user.dir")+"/"+file.getOriginalFilename());
convFile.setWritable(true);
file.transferTo(convFile);
INDArray array = new CustomerLossPrediction().generateOutput(convFile);
Files.delete(Paths.get(convFile.getPath()));
return array.toString();
}
发现该文件正在被 Java 进程使用。执行完成后如何删除此文件?这里有比写入文件更好的方法吗?你们中的一些人会在OutputStream
这里写信,但请注意,我需要与之合作MultipartFile
才能拥有文件上传功能。
解决方案
我不知道这是否可能,但我认为您可以将文件重命名为随机生成的字符串,然后锁定、读取、解锁,然后删除重命名的文件。理论上,另一个程序可以猜测文件名并在文件被解锁之后但在文件被删除之前读取文件。但在实践中,你可能会没事的。
推荐阅读
- java - 如何将 <br> 转换为
xslt/xquery - jsp - 当加载未从数据库 JSP mysql 加载的页面数据时
- android - 此用例的哪个 RxJava 运算符
- azure - 将文件保存到子目录中的 Azure 文件共享
- permissions - 将正确的用户/组设置为 Apache 服务器/项目
- python - 在包含数字的指定嵌套列表中查找最大数字
- c# - SkiaSharp SKMatrix.PostConcat 过时了吗?
- c# - Asp.net MVC DropDownListFor 来自模型的列表列表
- android - 如何编写 Room Dao 查询以在 Android 中基于单表中的可选多列搜索唯一数据?
- flutter - 在 Flutter 中使用 awesome_notifications 显示通知的问题