Introducción
Contenido
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 File
la 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 File
la 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:
Te puede interesar:Cómo copiar un archivo en Javatrue
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:
Te puede interesar:Métodos de objetos de Java: esperar y notificarFile 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:
Te puede interesar:Tutorial de Dropwizard: Desarrolle servicios web RESTful más rápidoFile 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
.