无法在C:\ TEMP中创建文件

时间:2009-10-22 09:26:52

标签: java

继上一个问题之后,出于某种原因我使用以下代码:

    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。

6 个答案:

答案 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中是否有一个文件,其中包含您想要锁定的名称?