继上一个问题之后,出于某种原因我使用以下代码:
final File tmpDir = new File("C:/TEMP/", zipFile.getName());
if(!tmpDir.mkdir() && tmpDir.exists()) {
System.err.println("Cannot create: " + tmpDir);
System.exit(0);
}
我收到错误(无法创建:C:\ TEMP \ aZipFile)但是,如果我使用以下内容:
final File tmpDir = new File(System.getProperty("java.io.tmpdir"), zipFile.getName());
if(!tmpDir.mkdir() && tmpDir.exists()) {
System.err.println("Cannot create: " + tmpDir);
System.exit(0);
}
它完美无缺。我的问题是我想使用C:\ TEMP,因为这与我正在进行的项目的其余部分一致。
同样,我在Windows XP和JDeveloper IDE上使用Java 1.4。
答案 0 :(得分:3)
if(!tmpDir.mkdir() && tmpDir.exists())
不应该是:
if(!tmpDir.mkdir() && !tmpDir.exists())
答案 1 :(得分:1)
好吧,如果System.getProperty("java.io.tmpdir")
没有返回'C:\ TEMP',那就不一样了。虽然我建议依赖java.io.tmpdir,但你也可以确保C:\ TEMP存在 - 或者根据需要创建它:``;
File temp = new File("C:/TEMP/");
if (!temp.exists()) temp.mkdir();
File tmpDir = new File(temp, zipFile.getName());
或者,您可以将代码更改为
final File tmpDir = new File(System.getProperty("java.io.tmpdir"), zipFile.getName());
// note the change from mkdir to mkdirs
if(!tmpDir.mkdirs() && !tmpDir.exists()) {
System.err.println("Cannot create: " + tmpDir);
System.exit(0);
}
编辑:我刚刚看到了atomice的答案,他是对的:它是!tmpDir.exists()
而不是tmpDir.exists()
答案 2 :(得分:1)
为什么不使用File.createTempFile
,这不是您尝试存档的内容吗?
答案 3 :(得分:0)
是因为您没有"C:/TEMP/"
的写入权限还是TEMP文件夹不存在?
答案 4 :(得分:0)
您是否将'System.getProperty(“java.io.tmpdir”)'的结果与您正在尝试的内容进行比较? 此外,在WindowsXP上,我会将“C:\ Temp \”作为目录名称。
答案 5 :(得分:0)
temp dir中是否有一个文件,其中包含您想要锁定的名称?