2013-09-05 9 views
7

Ich versuche ein neues Verzeichnis und eine Datei in diesem Verzeichnis zu erstellen, kann mir jemand sagen, wo ich falsch liege?java verwenden, um ein neues Verzeichnis und eine Datei darin zu erstellen

Ich benutze ein Windows-System und ich möchte das Verzeichnis in dem Ordner vorhanden sein .java Datei vorhanden ist.

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

alle Ausnahmen? – sanbhat

+0

Dies ist grundlegend für Java. Sie könnten dies erhalten, wenn Sie die Dokumente auf Basis-Java in http://docs.oracle.com/javase/tutorial/essential/io/fileOps.html – AJJ

+1

@ Rock123 gerade erst auf java.felt wie Fragen hier und fragte.Sie lesen könnte mich auf eine bessere Ressource hinweisen. – WannaBeCoder

Antwort

22

Im Grunde, was passiert ist, werden Sie ein Verzeichnis Library\test.txt, dann versuchen, eine neue Datei zu erstellen, genannt die gleiche Sache genannt zu schaffen, dies ist offensichtlich nicht zur Arbeit gehen.

Anstatt also ...

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

Versuchen ...

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

Zusätzliche

mkdir wird nicht wirklich jede Art von Ausnahme auslösen, wenn es fehlschlägt, die ist eher ärgerlich, stattdessen würde ich etwas mehr wie ...

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

Nur so wusste ich, was das eigentliche Problem war ...

Zusätzliche

Die Erstellung des Verzeichnisses (in diesem Zusammenhang) an der Stelle sein, werden Sie von dem Programm lief. ..

beispiels~~POS=TRUNC weise~~POS=HEADCOMP führen Sie das Programm von C:\MyAwesomJavaProjects\FileTest, wird das Library Verzeichnis (dh C:\MyAwesomJavaProjects\FileTest\Library) in diesem Verzeichnis erstellt werden. Es ist im Allgemeinen keine gute Idee, es am selben Ort wie Ihre .java Datei zu erstellen, da Ihre Anwendung möglicherweise später in einem Jar gebündelt wird.

+0

Dieser Code funktioniert in Windows, funktioniert aber nicht in Linux. –

+0

Das Grundprinzip beschlagen Arbeit, vorausgesetzt, Sie haben Schreibberechtigungen, um das Verzeichnis/Datei zu erstellen, verwende ich die gleiche Technik auf MacOS und Unix-Systemen und es funktioniert gut – MadProgrammer

3

Tun Sie dies, um ein neues Verzeichnis in Ihrem Projekt, erstellen Sie eine Datei und dann schreiben Sie auf, es zu schaffen:

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

} 
Verwandte Themen