Programa Java para Crear Directorios Recursivamente

Un directorio/carpeta es un sistema de archivos utilizado en informática que actúa como una ubicación de memoria con nombre para almacenar archivos relacionados o incluso subcarpetas. Esto permite una mejor gestión de archivos y carpetas y se basa en el concepto de carpetas del mundo real utilizadas para almacenar archivos. Este sistema es la implementación de la compartimentación de la memoria y hace que el espacio de trabajo sea más organizado. El sistema de archivos de directorio permite la organización jerárquica, así como el anidamiento de directorios dentro de otros directorios.  

La recursividad es el proceso a través del cual una función se llama a sí misma. Es un enfoque muy útil para dividir problemas complejos en subpartes más pequeñas.

Enfoques:

  1. Usando el método thekdir ()
  2. Uso del método createDirectory() del paquete java.nio

1. Usando el método mkdir()

El primer enfoque es importar la clase java.io.File y definir un método llamado file() que internamente hace uso de la función mkdir() para crear directorios recursivamente. El algoritmo utilizado dentro del método file() se describe a continuación.

Algoritmo:

  1. Cree el método file() con el tipo de devolución como void.
  2. Este método toma tres parámetros:
    • String md que significa Directorio principal.
    • Ruta de string que representa la estructura del directorio que se realizará donde cada carácter significa un nuevo directorio
    • Int depth representa el número de directorios a realizar.
  3. Declare la condición de terminación como si (profundidad == 0) regresara.
  4. Disminuya la profundidad para cada llamada recursiva.
  5. Compruebe si la string de ruta tiene una longitud de 0 y muestra el mensaje correspondiente.
  6. Agregue el md con el primer carácter de la string de ruta y elimine el primer carácter de la string de ruta para cada llamada recursiva.
  7. Crea un objeto de la clase File con md como parámetro.
  8. Verifique si el directorio ya existe usando el método exist() y muestre el mensaje.
  9. De lo contrario, cree el directorio utilizando el método mkdir().
  10. Haz la llamada recursiva.

Implementación: A continuación se muestra la implementación del programa anterior.

Java

// Java Program to Create Directories Recursively
 
// Importing required classes
import java.io.File;
 
// Main class
class GFG {
 
    // Method
    // To create directories
    static void file(String md, String path, int depth)
    {
 
        // md stores the starting path each character in
        // path represents new directory depth stores
        // the number of directories to be created
        // terminating condition
 
        if (depth == 0)
            return;
 
        // Decrementing the depth by 1
        depth -= 1;
 
        // Checking if the path exists
        if (path.length() == 0)
            System.out.println("Path does not exist");
 
        // execute if the path has more directories
        else {
 
            // appending the next directory
            // would be md = md + "\\" +
            // path.charAt(0) for windows
            md = md + "/" + path.charAt(0);
 
            // removing the first character
            // from path string
            path = path.substring(1);
 
            // creating File object
            File f = new File(md);
 
            // if the directory already exists
            if (f.exists()) {
                System.out.println("The Directory "
                                   + "already exists");
            }
            else {
 
                // creating the directory
                boolean val = f.mkdir();
                if (val)
                    System.out.println(md + " created"
                                       + " successfully");
                else
                    System.out.println(
                        "Unable to "
                        + "create Directory");
            }
        }
 
        // recursive call
        file(md, path, depth);
    }
 
    // Driver method
    public static void main(String[] args)
    {
 
        // creating class object
        GFG ob = new GFG();
 
        // path for windows -> "C:\\Users\\
        // harshit\\Desktop"
        ob.file("/home/mayur/Desktop", "abcd", 4);
    }
}

Producción:

2. Usando el método createDirectory() del paquete java.nio

Este enfoque utiliza el paquete java.nio para implementar el código. Desplegamos el método createDirectories() aquí para crear nuevos directorios. También hacemos uso del bloque try-catch para detectar errores de E/S. El algoritmo se puede encontrar a continuación.

Algoritmo:

  1. Repita los pasos del 1 al 6 como se menciona en el algoritmo del enfoque 1.
  2. Ahora, convierta la string md a Path Instance usando el método Path.gets().
  3. Nuevamente, verifique si el Directorio ya existe usando el método exist().
  4. Si el Directorio no está presente, abra un bloque try-catch y cree un nuevo directorio usando el método createDirectories().
  5. De lo contrario, muestra que el Directorio ya existe.
  6. Hacer la llamada recursiva

A continuación se muestra la implementación del programa anterior.

Java

// Java code to create directories recursively
 
// importing the packages
import java.nio.file.Paths;
import java.nio.file.Path;
import java.nio.file.Files;
import java.io.IOException;
 
class GFG {
 
    // defining the recursive method
    static void file(String md, String path, int depth)
    {
 
        // base case
        if (depth == 0)
            return;
 
        // decrement the depth
        depth -= 1;
 
        // check if the path is empty
        if (path.length() == 0)
            System.out.println("Path does not exist");
        else {
 
            // appending the first character from
            // path string
            md = md + "/" + path.charAt(0);
 
            // removing the first character from
            // path string
            path = path.substring(1);
 
            // creating the path instance from
            // path string
            Path p = Paths.get(md);
 
            // if the directory already exists
            if (!Files.exists(p)) {
                try {
 
                    // creating directory
                    Files.createDirectories(p);
                    System.out.println(md + " created"
                                       + " successfully");
                }
                catch (IOException err) {
                    err.printStackTrace();
                }
            }
            else
                System.out.println("The directory "
                                   + "already exists");
        }
 
        // recursive call
        file(md, path, depth);
    }
 
    // Driver Code
    public static void main(String[] args)
    {
 
        // creating the object of the class
        GFG ob = new GFG();
 
        // md would be -> "C:\\Users\\harshit\\
        // Desktop for windows
        ob.file("/home/mayur/Desktop", "klm", 5);
    }
}

Producción:

Publicación traducida automáticamente

Artículo escrito por ag01harshit y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *