[英]Create and delete a zip file
我写了一个JUnit 5测试,我需要创建一个zip文件,在其上放置一些文本文件并删除zip文件。
我在创建zip文件及其中的文本文件时没有任何问题,但每当我调用file.delete()
它都会返回false
。
我甚至试图创建一个空的zip文件,它也无法删除它。 有办法解决这个问题吗?
static File file;
@BeforeAll
static void setUp() throws IOException {
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(file=File.createTempFile("tempDir",".zip")));
ZipEntry e = new ZipEntry("emptyFile.txt");
out.putNextEntry(e);
out.closeEntry();
e = new ZipEntry("oneLineFile.txt");
out.putNextEntry(e);
StringBuilder sb;
byte[] data;
sb = new StringBuilder();
sb.append("route_id,agency_id,route_short_name,route_long_name,route_type");
data = sb.toString().getBytes();
out.write(data, 0, data.length);
out.closeEntry();
out.close();
}
@AfterAll
static void set(){
file.delete(); // return false
}
如果您没有创建太多临时文件,请使用File.deleteOnExit()
:
请求在虚拟机终止时删除此抽象路径名表示的文件或目录。 文件(或目录)的删除顺序与注册顺序相反。 调用此方法删除已注册删除的文件或目录无效。 将仅尝试删除虚拟机的正常终止,如Java语言规范所定义。
文件系统操作可能不安全,例如Windows喜欢锁定JVM进程使用的文件。
此外,您的测试代码可以终止异常,而无需正确关闭ZipOutputStream
可能会锁定文件并阻止删除。 你finally
应该使用:
ZipOutputStream out = null;
try {
out = ...
} finally {
if (out != null)
out.close();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.