Java: compruebe si el archivo o directorio está vacío

J

Introducción

En Java, trabajar con archivos y directorios es bastante común. También estamos interesados ​​a 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.

 

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con tus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad