2013-09-05 8 views
7

Próbuję utworzyć nowy katalog i plik w tym katalogu, czy ktoś może mi powiedzieć, gdzie jestem źle?przy użyciu java, aby utworzyć nowy katalog i plik w nim

Używam systemu Windows i chcę, aby katalog był obecny w folderze, który zawiera mój plik .java.

import java.io.*; 
class PS_Task1 { 
    public static void main(String[] args) { 
     try { 
      File file = new File("Library\\test.txt"); 
      file.mkdir(); 
      file.createNewFile(); 
     } 
     catch(Exception e) { 
      System.out.println("ecception"); 
     } 
    } 
} 
+1

żadnych wyjątków? – sanbhat

+0

Jest to podstawowe środowisko Java. Możesz to uzyskać, czytając dokumenty na temat podstawowej wersji Java w http://docs.oracle.com/javase/tutorial/essential/io/fileOps.html – AJJ

+1

@ Rock123 po prostu zaczęło się na java.felt, jak pytaj tutaj i zapytał.you może wskazać mi lepsze zasoby. – WannaBeCoder

Odpowiedz

22

Zasadniczo, co dzieje się, tworzysz katalog o nazwie Library\test.txt, a następnie próbuje utworzyć nowy plik o nazwie to samo, to oczywiście nie będzie działać.

Tak więc, zamiast ...

File file = new File("Library\\test.txt"); 
file.mkdir(); 
file.createNewFile(); 

Spróbuj ...

File file = new File("Library\\test.txt"); 
file.getParentFile().mkdir(); 
file.createNewFile(); 

dodatkowe

mkdir nie będzie faktycznie rzucać jakiegokolwiek wyjątku jeśli to się nie powiedzie, który jest dość denerwujące, więc zamiast tego zrobiłbym coś bardziej podobnego do ...

File file = new File("Library\\test.txt"); 
if (file.getParentFile().mkdir()) { 
    file.createNewFile(); 
} else { 
    throw new IOException("Failed to create directory " + file.getParent()); 
} 

Tak więc wiedziałem czego rzeczywisty problem był ...

dodatkowe

Utworzenie katalogu (w tym kontekście) będzie w miejscu uruchomiono program z. ..

Na przykład, uruchamiasz program od C:\MyAwesomJavaProjects\FileTest, katalog Library zostanie utworzony w tym katalogu (tj. C:\MyAwesomJavaProjects\FileTest\Library). Utworzenie go w tym samym miejscu, co plik .java, zazwyczaj nie jest dobrym pomysłem, ponieważ Twoja aplikacja może zostać później dołączona do słoika.

+0

ten kod działa w systemie Windows, ale nie działa w systemie Linux. –

+0

Podstawowa zasada działała, zakładając, że masz uprawnienia do zapisu do utworzenia katalogu/pliku, używam tej samej techniki na systemach MacOS i Unix i działa dobrze – MadProgrammer

3

Czy to w celu stworzenia nowego katalogu wewnątrz projektu, należy utworzyć plik, a następnie napisz na nim:

public static void main(String[] args) { 
    //System.getProperty returns absolute path 
    File f = new File(System.getProperty("user.dir")+"/folder/file.txt"); 
    if(!f.getParentFile().exists()){ 
     f.getParentFile().mkdirs(); 
    } 
    //Remove if clause if you want to overwrite file 
    if(!f.exists()){ 
     try { 
      f.createNewFile(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
    try { 
     //dir will change directory and specifies file name for writer 
     File dir = new File(f.getParentFile(), f.getName()); 
     PrintWriter writer = new PrintWriter(dir); 
     writer.print("writing anything..."); 
     writer.close(); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 

}