# Automatisch Verzeichnis erstellen bei File erstellen



## internet (14. Nov 2015)

Hallo,

ist es möglich, sobald ich ein File an eine bestimme Stelle speichern möchte, z.B.
new File("C:/test/123456/test.png") und es in diesem Fall den Ordner 123456 noch nicht gibt, dass dieser automatisch erstellt wird?

Wie schaffe ich das?


----------



## knilch (14. Nov 2015)

Hi
Bevor du eine Datei in einem Verzeichnis erstellst, muss du prüfen das Verzeichnis schon vorhanden ist. Wenn nicht, musst du das erstellen... sonst bekommst du eine java.nio.file.NoSuchFileException...

```
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class Test {
    public static void main(String[] args) {
        String dirPath ="/home/user/123456/";  // für windows musst du den path anders schreiben: "c:\\test\\123456\\"
        String fileName = "test.png";
        Path filePath = Paths.get(dirPath + fileName);
        File folder;
        File file;
     
        folder = new File(dirPath);
        file = new File(dirPath + fileName);
     
        if(!folder.exists()) {
            try {
                Files.createDirectory(filePath.getParent());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if(!file.exists()) {
            try {
                Files.createFile(filePath);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
```


----------



## JStein52 (14. Nov 2015)

Ich würde es stattdessen noch so machen:


```
try {
                Files.createDirectories(filePath.getParent());
            } catch (IOException e) {
                e.printStackTrace();
            }
```

dann wird nämlich der komplette Pfad angelegt, auch wenn zwischendrin z.B. mehrere Verzeichnisse fehlen.


----------



## Dukel (15. Nov 2015)

Ich würde den Ordner (rekursiv) einfach erstellen lassen, wenn er nicht existiert?


----------



## InfectedBytes (15. Nov 2015)

Dukel hat gesagt.:


> Ich würde den Ordner (rekursiv) einfach erstellen lassen, wenn er nicht existiert?


warum das Rad neu erfinden? 
Ein einziger Methodenaufruf wie von JStein52 beschrieben und fertig.


----------



## Dukel (15. Nov 2015)

Das meinte ich ja, ich habe die Lösung nur irgendwie überlesen.


----------

