Wie erstelle ich eine Datei in einem Verzeichnis in Java?

156

Wenn ich eine Datei erstellen möchte C:/a/b/test.txt, kann ich Folgendes tun:

File f = new File("C:/a/b/test.txt");

Außerdem möchte ich FileOutputStreamdie Datei erstellen. Wie würde ich das machen? Aus irgendeinem Grund wird die Datei nicht im richtigen Verzeichnis erstellt.

Uerefer
quelle

Antworten:

245

Der beste Weg, dies zu tun, ist:

String path = "C:" + File.separator + "hello" + File.separator + "hi.txt";
// Use relative path for Unix systems
File f = new File(path);

f.getParentFile().mkdirs(); 
f.createNewFile();
RMT
quelle
35
Funktioniert nicht unter Linux, da es in Unix-Systemen kein "C:" gibt.
Marcelo
33
Verwenden new File("/a/b/test.txt")funktioniert für beide Systeme. Unter Windows wird es auf dieselbe Festplatte geschrieben, auf der JVM ausgeführt wird.
BalusC
6
f.getParentFile().mkdirs(); f.createNewFile();
Patrick Bergner
1
Vergessen Sie nicht, die aufgerufene Methode (mkdirs und createNewFile) auf Fehler zu überprüfen
Alessandro S.
1
if (! file.exists ()) f.createNewFile ();
Mehdi
50

Sie müssen sicherstellen, dass die übergeordneten Verzeichnisse vorhanden sind, bevor Sie schreiben. Sie können dies tun, indem Sie File#mkdirs().

File f = new File("C:/a/b/test.txt");
f.getParentFile().mkdirs();
// ...
BalusC
quelle
38

Mit Java 7 , können Sie verwenden Path, Pathsund Files:

import java.io.IOException;
import java.nio.file.FileAlreadyExistsException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class CreateFile {

    public static void main(String[] args) throws IOException {
        Path path = Paths.get("/tmp/foo/bar.txt");

        Files.createDirectories(path.getParent());

        try {
            Files.createFile(path);
        } catch (FileAlreadyExistsException e) {
            System.err.println("already exists: " + e.getMessage());
        }
    }
}

quelle
12

Verwenden:

File f = new File("C:\\a\\b\\test.txt");
f.mkdirs();
f.createNewFile();

Beachten Sie, dass ich die Schrägstriche für Pfade im Windows-Dateisystem in doppelte Schrägstriche geändert habe. Dadurch wird eine leere Datei auf dem angegebenen Pfad erstellt.

Marcelo
quelle
1
Unter Windows sind sowohl \\ als auch / gültig. Das createNewFile()ist übrigens unnötig, wenn man mit ihm FileOutputStreamsowieso schreibt .
BalusC
@ Eric notiert und korrigiert, danke.
Marcelo
Dadurch wurde anstelle der Datei ein Verzeichnis mit dem Namen test.txt erstellt.
MasterJoe2
3

Ein besserer und einfacherer Weg, dies zu tun:

File f = new File("C:/a/b/test.txt");
if(!f.exists()){
   f.createNewFile();
}

Quelle

Mehdi
quelle
2
String path = "C:"+File.separator+"hello";
String fname= path+File.separator+"abc.txt";
    File f = new File(path);
    File f1 = new File(fname);

    f.mkdirs() ;
    try {
        f1.createNewFile();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

Dies sollte eine neue Datei in einem Verzeichnis erstellen

Chitta
quelle
0

Neue Datei im angegebenen Pfad erstellen

import java.io.File;
import java.io.IOException;

public class CreateNewFile {

    public static void main(String[] args) {
        try {
            File file = new File("d:/sampleFile.txt");
            if(file.createNewFile())
                System.out.println("File creation successfull");
            else
                System.out.println("Error while creating File, file already exists in specified path");
        }
        catch(IOException io) {
            io.printStackTrace();
        }
    }

}

Programmausgabe:

Dateierstellung erfolgreich

AKHY
quelle
0

Überraschenderweise geben viele der Antworten keinen vollständigen Arbeitscode. Hier ist es:

public static void createFile(String fullPath) throws IOException {
    File file = new File(fullPath);
    file.getParentFile().mkdirs();
    file.createNewFile();
}

public static void main(String [] args) throws Exception {
    String path = "C:/donkey/bray.txt";
    createFile(path);
}
MasterJoe2
quelle
0

So erstellen Sie eine Datei und schreiben dort eine Zeichenfolge:

BufferedWriter bufferedWriter = Files.newBufferedWriter(Paths.get("Path to your file"));
bufferedWriter.write("Some string"); // to write some data
// bufferedWriter.write("");         // for empty file
bufferedWriter.close();

Dies funktioniert für Mac und PC.

Kirill Ch
quelle
0

Versuchen Sie Folgendes, um den FileOutputStream zu verwenden:

public class Main01{
    public static void main(String[] args) throws FileNotFoundException{
        FileOutputStream f = new FileOutputStream("file.txt");
        PrintStream p = new PrintStream(f);
        p.println("George.........");
        p.println("Alain..........");
        p.println("Gerard.........");
        p.close();
        f.close();
    }
}
Fridjato Teil Fridjat
quelle