web-dev-qa-db-fra.com

Créer automatiquement un chemin complet lors de l'écriture dans un nouveau fichier

Je veux écrire un nouveau fichier avec le FileWriter . Je l'utilise comme ça:

FileWriter newJsp = new FileWriter("C:\\user\Desktop\dir1\dir2\filename.txt");

Maintenant, dir1 et dir2 n'existent pas. Je veux que Java les crée automatiquement s'ils ne sont pas déjà là. En fait, Java doit définir le chemin d'accès complet au fichier s'il n'existe pas déjà.

Comment puis-je atteindre cet objectif?

221
user321068

Quelque chose comme:

File file = new File("C:\\user\\Desktop\\dir1\\dir2\\filename.txt");
file.getParentFile().mkdirs();
FileWriter writer = new FileWriter(file);
398
Jon Skeet

Depuis Java 1.7, vous pouvez utiliser Files.createFile:

Path pathToFile = Paths.get("/home/joe/foo/bar/myFile.txt");
Files.createDirectories(pathToFile.getParent());
Files.createFile(pathToFile);
128
cdmihai

Utilisez File.mkdirs():

File dir = new File("C:\\user\\Desktop\\dir1\\dir2");
dir.mkdirs();
File file = new File(dir, "filename.txt");
FileWriter newJsp = new FileWriter(file);
26
Armand

Utilisez File.mkdirs() .

15
Marcelo Cantos

Utilisez FileUtils pour gérer tous ces maux de tête.

Édition: Par exemple, utilisez le code ci-dessous pour écrire dans un fichier. Cette méthode "vérifiera et créera le répertoire parent s'il n'existe pas".

openOutputStream(File file [, boolean append]) 
3
kakacii