2009-10-22 7 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()) 

Shouldn입니다 이 수 :

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

왜 upvote? 이 질문에 대답합니까? – Graviton

+0

예, 문장의 첫 번째 부분은 temp dir을 만들려고합니다. 만들면 true를 반환하고 그렇지 않으면 false를 반환하면이 posibility는 if의 두 번째 부분에서 다룹니다. temp가 존재하지 않고 생성 될 수없는 경우에만 if가 true가되도록 – Telcontar

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

temp 디렉토리에 잠긴 이름이있는 파일이 있습니까?

1

File.createTempFile을 사용하지 않는 이유는 무엇입니까?

관련 문제