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.

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

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();
// ...

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

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.


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


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


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


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

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.


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();
    }
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.