2012-03-07 7 views
8

Obecnie mam problem, że napotykam wyjątek, którego nigdy wcześniej nie widziałem i dlatego nie wiem, jak sobie z nim poradzić.Hot, aby pozbyć się wyjątku java.io.Exception na java.io.WinNTFileSystem.createFileExclusively?

Chcę utworzyć plik zgodnie z zadanymi parametrami, ale nie zadziała.

public static Path createFile(String destDir, String fileName) throws IOException { 
     FileAccess.createDirectory(destDir); 

     Path xpath = new Path(destDir + Path.SEPARATOR + fileName); 

     if (! xpath.toFile().exists()) { 
      xpath.toFile().createNewFile(); 
      if(FileAccess.TRACE_FILE)Trace.println1("<<< createFile " + xpath.toString()); 
     } 
     return xpath; 
    } 


    public static void createDirectory(String destDir) { 
     Path dirpath = new Path(destDir); 
     if (! dirpath.toFile().exists()) { 
      dirpath.toFile().mkdir(); 
      if(TRACE_FILE)Trace.println1("<<< mkdir " + dirpath.toString()); 
     } 
    } 

Za każdym razem mogę uruchomić mojej aplikacji pojawia się następujący wyjątek:

java.io.IOException: The system cannot find the path specified 
at java.io.WinNTFileSystem.createFileExclusively(Native Method) 
at java.io.File.createNewFile(Unknown Source) 
[...] 

Jak mogę się go pozbyć? (Używam Win7 64bit btw)

Odpowiedz

9

Problem polega na tym, że nie można utworzyć pliku, chyba że cała ścieżka zawierająca już istnieje - jego bezpośredni katalog nadrzędny i wszyscy nad nią rodzice.

Jeśli masz ścieżkę c: \ Temp i nie ma pod nią podkatalogów i próbujesz utworzyć plik o nazwie c: \ Temp \ SubDir \ myfile.txt, to się nie powiedzie, ponieważ C: \ Temp \ SubDir doesn ' t istnieje.

Przed

xpath.toFile().createNewFile(); 

dodać

xpath.toFile().mkdirs(); 

(nie jestem pewien, czy mkdirs() wymaga tylko ścieżkę w obiekcie, a jeśli tak, to zmienić tę nową linię do

new File(destDir).mkdirs(); 

W przeciwnym razie otrzymasz nazwę pliku utworzoną jako podkatalog Zamiast tego ctory! Możesz sprawdzić, który z nich jest poprawny, sprawdzając Eksploratora Windows, aby zobaczyć, jakie katalogi utworzył.)

+0

dziękuję, _new File (destDir) .mkdirs(); _ rozwiązanie zadziałało! – keinabel

+0

Nie ma za co. – JTeagle

Powiązane problemy