如果被进程锁定,如何删除Java中的文件?

时间:2018-07-28 13:26:42

标签: java spring rest web-services spring-boot

决定就此发布新的问题,因为现有的帖子都没有找到我的解决方案。我的是一个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();
    }

文件删除没有发生,而是存储在用户主目录中: enter image description here

发现该文件正在被Java进程使用。执行完成后如何删除该文件?这里有比写入文件更好的方法吗?你们中的有些人会在这里提出对OutputStream的写作,但是请注意,我需要使用MultipartFile才能具有文件上传功能。如果您可以提出建议,我将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

我不知道是否可行,但我认为您可以将文件重命名为随机生成的字符串,然后锁定,读取,解锁然后删除重命名的文件。从理论上讲,另一个程序可以在解锁后但在删除文件之前猜测文件名并读取文件。但实际上,您可能会没事的。