从VM退出后如何在其中创建和删除临时文件

时间:2019-01-16 12:30:06

标签: java spring spring-mvc

我有spring mvc应用程序,我需要将准备好的文件返回给用户,以响应用户的请求。 流程:

  1. 用户发出请求
  2. 基于请求的数据(json等),我需要获取一个zip文件,在zip文件内打开一个txt文件,更改文件中的内容。
  3. 返回修改后的zip。

我的解决方案:我的服务器上有基本的zip文件,当用户发出请求时,我会将基本文件复制到tmp文件->我将tmp文件解压缩->进行修改->再将其压缩->返回到用户。

问题:如何在处理请求后确保tmp文件将被删除(即使VM中发生错误)?

同时有很多用户。

zip的大小超过100M。

1 个答案:

答案 0 :(得分:1)

https://howtodoinjava.com/java/io/how-to-delete-temporary-file-in-java/

这里有一个很好的教程。确保您致电

    ArrayList<Integer> arrList = new ArrayList<Integer>();

    Flux.just(1, 2, 3, 4)
            .log()
            .map(i -> i * 2)
            .subscribeOn(Schedulers.parallel())
            .subscribe(
                    t -> {
                        System.out.println(t + " thread id: " + Thread.currentThread().getId());
                        arrList.add(t);
                    }
            );
    System.out.println("size of arrList(before the wait): " + arrList.size());
    System.out.println("Thread id: "+ Thread.currentThread().getId() + ": id of main thread ");
    Thread.sleep(100);
    System.out.println("size of arrList(after the wait): " + arrList.size());
  

请求在虚拟机终止时删除此抽象路径名表示的文件或目录

请参见https://docs.oracle.com/javase/8/docs/api/java/io/File.html#deleteOnExit--