Pregunta Java's createNewFile () - ¿También creará directorios?


Tengo un condicional para verificar si existe un cierto archivo antes de proceder (./logs/error.log) Si no se encuentra, quiero crearlo. Sin embargo,

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

también crear logs/ si no existe?


73
2017-07-12 14:59


origen


Respuestas:


No.
Utilizar tmp.getParentFile().mkdirs() antes de crear el archivo.


165
2017-07-12 15:00



File theDir = new File(DirectoryPath);
if (!theDir.exists()) theDir.mkdirs();

18
2017-07-12 15:02



File directory = new File(tmp.getParentFile().getAbsolutePath());
directory.mkdirs();

Si los directorios ya existen, no pasará nada, por lo que no necesita ningún control.


14
2017-07-12 15:09



StringUtils.touch(/path/filename.ext) ahora (> = 1.3) también creará el directorio y el archivo si no existen.


3
2018-04-09 19:56



Estilo Java 8

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

Para escribir en archivo

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

Leer

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

Ejemplo completo

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

1
2018-05-31 08:40