web-dev-qa-db-fra.com

CreateNewFile () de Java - créera-t-il également des répertoires?

J'ai une condition pour vérifier si un certain fichier existe avant de continuer (./logs/error.log). S'il n'est pas trouvé, je veux le créer. Cependant,

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

créer également logs/ s'il n'existe pas?

74
n0pe

Non.
Utilisez tmp.getParentFile().mkdirs() avant de créer le fichier.

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

Si les répertoires existent déjà, rien ne se passera, vous n'avez donc besoin d'aucun contrôle.

14
Jake Roussel

Style Java 8

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

Écrire sur dossier

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

Lire 

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

Exemple complet

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) créera maintenant (> = 1.3) le répertoire et le fichier s’ils n’existent pas.

3
NathanChristie

Non, et si logs n'existe pas, vous recevrez Java.io.IOException: No such file or directory

Fait amusant pour les développeurs Android: les appels tels que Files.createDirectories() et Paths.get() fonctionneraient avec le support de min api 26.

0
Alejandra