En muchas soluciones de la vida real es necesario manipular y leer el contenido de archivos y es muy común que en un principio se trate de utilizar solo las clases del paquete java.io, esto esta bien si se quiere optimizar la lectura o manipulación de archivos o se requiere una solución a un problema especifico. Sin embargo existen los Apache Commons, que es un conjunto de librerías para una gran variedad de problemas y una de esas librerías es commons-io.jar que viene con la clase FileUtils y que facilita el manejo de archivos. Aquí enlistamos algunas de las funciones de esa clase que la hacen bastante útil.
- Permite escribir a un archivo
- Leer desde un archivo
- Crear directorios, incluyendo directorios padres (de forma recursiva)
- Copiar archivos y directorios
- Borrar archivos y directorios
- Covertir hacia o desde una URL
- Listar archivos y directorios con filtros y extensión
- Comparar el contenido de archivos
- Obtener el última fecha de actualizacion
- Calcular checksum, entre otras.
Aqui un pequeño ejemplo para convertir un archivo de texto a String o traer una lista de archivos desde un directorio y filtrando extensiones.
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.util.Collection;
import java.util.Iterator;
public class Prueba {
public static void main(String[] args) {
//Leer el contenido de un archivo de texto y depositarlo en un String
File archivo = new File("ejemplo.txt");
//Traer una lista de archivos filtrando la extensión
File root = new File("/proy");
try {
// Leer el contenido de un archivo y copiarlo a un String
String content = FileUtils.readFileToString(archivo);
System.out.println("File content: " + content);
//Obtener una lista de archivos de forma recursiva contenida en un directorio
String[] extensiones = {"xml", "java", "dat"};
boolean recursivo = true;
Collection lisaArchivos = FileUtils.listFiles(root, extensiones, recursivo);
for (Iterator iterator = lisaArchivos.iterator(); iterator.hasNext();) {
File archivoAux = (File) iterator.next();
System.out.println("> " + archivoAux.getAbsolutePath());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}