wake-up-neo.net

Javas createNewFile () - erstellt es auch Verzeichnisse?

Ich habe eine Bedingung, zu überprüfen, ob eine bestimmte Datei vorhanden ist, bevor Sie fortfahren (./logs/error.log). Wenn es nicht gefunden wird, möchte ich es erstellen. Wird aber

File tmp = new File("logs/error.log");
tmp.createNewFile();

logs/ auch erstellen, wenn es nicht existiert?

74
n0pe

Nein.
Verwenden Sie tmp.getParentFile().mkdirs(), bevor Sie die Datei erstellen.

169
jtahlborn
File theDir = new File(DirectoryPath);
if (!theDir.exists()) theDir.mkdirs();
18
Eng.Fouad
File directory = new File(tmp.getParentFile().getAbsolutePath());
directory.mkdirs();

Wenn die Verzeichnisse bereits vorhanden sind, geschieht nichts, sodass Sie keine Überprüfungen benötigen.

14
Jake Roussel

Java 8 Style

Path path = Paths.get("logs/error.log");
Files.createDirectories(path.getParent());

In Datei schreiben

Files.write(path, "Log log".getBytes());

Lesen 

System.out.println(Files.readAllLines(path));

Vollständiges Beispiel

public class CreateFolderAndWrite {

    public static void main(String[] args) {
        try {
            Path path = Paths.get("logs/error.log");
            Files.createDirectories(path.getParent());

            Files.write(path, "Log log".getBytes());

            System.out.println(Files.readAllLines(path));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
4
ahmet

StringUtils.touch(/path/filename.ext) erstellt jetzt (> = 1.3) auch das Verzeichnis und die Datei, falls diese nicht vorhanden sind.

3
NathanChristie

Nein, und wenn logs nicht vorhanden ist, erhalten Sie Java.io.IOException: No such file or directory

Spaßfaktor für Android-Entwickler: Aufrufe wie Files.createDirectories() und Paths.get() würden funktionieren, wenn min api 26 unterstützt wird.

0
Alejandra