Java: compruebe si el archivo o directorio est谩 vac铆o

    Introducci贸n

    En Java, trabajar con archivos y directorios es bastante com煤n. Tambi茅n estamos interesados 鈥嬧媋 menudo en el contenido de esos archivos y directorios.

    Dependiendo del contenido del archivo, es posible que deseemos comportarnos de manera diferente. Es posible que estemos escribiendo algunos datos en un archivo y primero queremos verificar si ya contiene alguna informaci贸n antes de sobrescribirlo. Del mismo modo, es posible que deseemos eliminar un directorio si est谩 vac铆o. El conocimiento de si est谩 vac铆o o no puede, en tales casos, ser de vital importancia.

    En este tutorial, repasaremos algunos ejemplos de c贸mo verificar si un archivo o directorio est谩 vac铆o en Java.

    Compruebe si un archivo est谩 vac铆o en Java

    Hay dos formas de comprobar si File esta vacio.

    Trabajaremos con dos archivos, uno vac铆o y otro no vac铆o:

    09/17/2020  01:00 PM                 0 file
    09/17/2020  01:00 PM                 2 file2
    

    file es 0 bytes de longitud, mientras que file2 es 2 bytes de longitud.

    Vale la pena se帽alar que antes de realizar cualquier operaci贸n en un archivo o directorio, debe verificar si existe un archivo o directorio, as铆 como su tipo para evitar ejecutar los m茅todos incorrectos.

    Usando File.length ()

    Seg煤n su documentaci贸n, un File El objeto es “una representaci贸n abstracta de nombres de rutas de archivos y directorios”. Cada File El objeto tiene m茅todos para obtener informaci贸n sobre ese archivo espec铆fico.

    Sigamos adelante y creemos un m茅todo auxiliar simple que devuelva true Si el Filela longitud es 0 y false de otra manera:

    public boolean isFileEmpty(File file) {
        return file.length() == 0;
    }
    

    Ahora, prob茅moslo en un archivo vac铆o y no vac铆o:

    File file1 = new File("/file");
    File file2 = new File("/file2");
    
    System.out.println(isFileEmpty(file1));
    System.out.println(isFileEmpty(file2));
    

    Este c贸digo devuelve:

    true
    false
    

    Usando BufferedReader

    Otra forma de comprobar si el Filela longitud es 0 o no es usar el BufferedReader. Nos permite acceder al contenido de los personajes de las transmisiones (como archivos). Si no hay contenido en el archivo, est谩 vac铆o:

    public boolean isFileEmpty(File file) {
        BufferedReader br = new BufferedReader(new FileReader(file));     
        return br.readLine() == null;
    }
    

    La declaraci贸n del m茅todo sigue siendo la misma que antes: acepta un File y devuelve un boolean. Aunque esta vez, hemos creado una instancia BufferedReader y le proporcion贸 un FileReader que acepta nuestro File. Es un poco m谩s complejo que antes, pero hace el trabajo igual de bien.

    Entonces, si el BufferedReader no tiene nada que leer del archivo, sabemos que est谩 vac铆o.

    Nuevamente, probemos esto en un archivo vac铆o y no vac铆o:

    File file1 = new File("/file");
    File file2 = new File("/file2");
    
    System.out.println(isFileEmpty(file1));
    System.out.println(isFileEmpty(file2));
    

    Este c贸digo devuelve:

    true
    false
    

    Compruebe si el directorio est谩 vac铆o en Java

    Tambi茅n hay dos formas de comprobar si un directorio est谩 vac铆o en Java.

    Usando File.list ()

    los File La clase tiene un m茅todo conveniente para recopilar todos los archivos y directorios (entradas, es decir, archivos y directorios) dentro de un directorio determinado. Podemos usar este m茅todo para verificar si el n煤mero de tales entradas es cero:

    public boolean isDirectoryEmpty(File directory) {  
        String[] files = directory.list();
        return files.length == 0;  
    }
    

    El m茅todo devuelve una matriz de nombres de entrada. Si el length de esta matriz es 0, el directorio est谩 vac铆o.

    Ejecutemos esto en un directorio vac铆o y no vac铆o:

    File directory1 = new File("/empty_directory");
    File directory2 = new File("/directory");
    
    System.out.println(isDirectoryEmpty(directory1));
    System.out.println(isDirectoryEmpty(directory1));
    

    Esto devuelve:

    true
    false
    

    Usando un DirectoryStream

    Otra t茅cnica r谩pida, aunque m谩s avanzada, implica el uso de secuencias. Primero, creamos un nuevo DirectoryStream llamando Files.newDirectoryStream() clase. Este m茅todo acepta un Path entonces necesitamos convertir nuestro File en una Path llamando al toPath() m茅todo:

    public boolean isDirectoryEmpty(File directory) throws IOException {
        DirectoryStream<Path> stream = Files.newDirectoryStream(directory.toPath());
        return !stream.iterator().hasNext();  
    }
    

    Luego, recopilamos el iterador de la secuencia y verificamos si contiene una entrada siguiente llamando hasNext(). Si no contiene al menos una entrada, el directorio est谩 vac铆o.

    Ejecutemos este c贸digo:

    File directory1 = new File("/empty_directory");
    File directory2 = new File("/directory");
    
    System.out.println(isDirectoryEmpty(directory1));
    System.out.println(isDirectoryEmpty(directory1));
    

    Y esto resulta en:

    true
    false
    

    Conclusi贸n

    En este tutorial, presentamos algunos ejemplos para verificar si los archivos y directorios est谩n vac铆os. Primero, verificamos si los archivos est谩n vac铆os usando el File clase y su length() m茅todo, seguido de un BufferedReader Acercarse.

    Luego, verificamos si un directorio est谩 vac铆o usando File.list() y creando un DirectoryStream.

     

    Etiquetas:

    Deja una respuesta

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