背景
从视频存储中心下载视频保存到本地。发现执行过程确实能看到本地视频的产生,一旦程序执行完,该视频又被删除了。
code 如下 :
@Test
public void testDownloadVideo() throws IOException {
String url = "http://xxx/t.mp4";
File file = new File("/Users/pengwei.xpw/test.mp4");
file.deleteOnExit();
if (!file.exists()) {
file.createNewFile();
}
OutputStream out = new FileOutputStream(file);
HttpClientParams httpClientParams = new HttpClientParams();
httpClientParams.setSoTimeout(2000);
httpClientParams.setConnectionManagerTimeout(2000);
HttpUtils.getHttpResponse(url, out, httpClientParams);
out.flush();
out.close();
}
怀疑deleteOnExit是不是在作怪,谷歌了下,得到了官方解释
Java file delete 和 deleteOnExit 区别
- delete : 删除文件。一旦调用,程序立即执行删除操作
- deleteOnExit :顾名思义 : 存在则删除。你以为这么简单?不要被别面迷惑了, 它被调用时,相当于对deleteOnExit做了一个生声明, 不会马上执行删除操作, 而是程序运行结束, JVM终止时才真正调用删除操作。即该方法是将删除的命令缓存了一下,到服务停止的时候再进行操作!
恍然大悟,于是deleteOnExit换成即可。这样程序在执行完时,不会去删除生成的视频。