2009-10-22 42 views
0

从以前的问题继,因为当我使用下面的代码的一些原因:无法创建C文件: TEMP

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。

回答

3
if(!tmpDir.mkdir() && tmpDir.exists()) 

不该“T这是:

if(!tmpDir.mkdir() && !tmpDir.exists()) 
+0

为什么upvote?这是否回答这个问题? – Graviton 2009-10-22 09:35:40

+0

是的,句子的第一部分尝试创建临时目录,如果它创建则返回true,如果它不能创建或已经存在,则返回false,此可能性由if的第二部分覆盖。所以只有当临时目录不存在并且不能创建时if才为真 – Telcontar 2009-10-22 09:50:22

0

是因为你没有写访问"C:/TEMP/"或TEMP文件夹不存在?

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()

0

您是否将'System.getProperty(“java.io.tmpdir”)'的结果与您正在尝试的结果进行了比较? 另外,在WindowsXP上,我会选择“C:\ Temp \”作为目录名称。

0

是否有名为临时目录你想,一个文件被锁定?

1

为什么不使用File.createTempFile,是不是你尝试归档什么?