我做了一个简单的测试,以确保 ant 任务的行为正常,因此为 Windows 和 Linux 输入了非法文件字符,如下所示:
@Test(expected=BuildException.class)
public void destinationDirectoryCreationException() throws Exception {
backupTask.setSrcDir(testResourceDirectory);
backupTask.setDestDir(new File("?/"));
backupTask.execute();
}
不幸的是,/
是非法文件字符的原因是它是路径分隔符,因此这将照常创建目录。
此外,char 0
或 nul
被各种 apis(特别是本机文件 apis 和 eclipse 的调试变量资源管理器)解释为流的结束,因此之后会忽略所有内容。
No.Linux太棒了,不能因为你可怜的小测试而失败。
好的,所以osgx实际上提出了一个特别适用于我的测试的解决方案(如果他做出了答案,他可以获得15次代表;)); 使目录成为不存在的目录的子目录。 例如 backupTask.setDestDir(new File("/\/?/"));
.唯一的问题是它与原始测试略有不同,但我对此没意见。
另请注意,(我相信)如果调用.mkdirs()
而不是mkdir()
,它仍然会成功创建文件夹