Manejo de archivos con FileUtils de Apache Commons IO en Java. La fundación Apache ha creado diversas herramientas para manipular datos y archivos bastante útiles.
Recuerda que al crear nuestros ejemplos utilizamos Maven y en archivo POM agregamos esta dependencia.
<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.6</version> </dependency>
La clase FileUtils de la librería Commons-IO te permitirá manipular archivos de diversas formas, por ejemplo, para copiar un archivo de una carpeta a otra sólo es necesario usar la función copyFileToDirectory. En este ejemplo tenemos un archivo de texto y queremos hacer una copia del mismo a la carpeta «subcarpeta«.
package com.decodigo.ejemplos; import java.io.File; import org.apache.commons.io.FileUtils; /** * * @author decodigo */ public class CopiarArchivosCommonsIO { public static void main(String args[]) { try { File archivo1 = new File("/home/decodigo/Documentos/java/archivos/archivo1.txt"); File subcarpeta = new File("/home/decodigo/Documentos/java/archivos/subcarpeta/"); FileUtils.copyFileToDirectory(archivo1, subcarpeta); System.out.println("listo"); } catch (Exception e) { e.printStackTrace(); } } }
Si ejecutamos el ejemplo obtenemos este resultado:
Se copia sólo el archivo «archivo1.txt» a la carpeta: /home/decodigo/Documentos/java/archivos/subcarpeta
Otro método muy útil sirve para copiar el contenido de una carpeta a otra copyToDirectory.
package com.decodigo.ejemplos; import java.io.File; import org.apache.commons.io.FileUtils; /** * * @author decodigo */ public class CopiarCarpetasCommonsIO { public static void main(String args[]) { try { File directorioOrigen = new File("/home/decodigo/Documentos/java/archivos"); File directorioDestino = new File("/home/decodigo/Documentos/java/archivosRespaldo"); FileUtils.copyToDirectory(directorioOrigen, directorioDestino); } catch (Exception e) { e.printStackTrace(); } } }
Con el resultado siguiente:
Copiando el contenido de /home/decodigo/Documentos/java/archivos de forma recursiva a /home/decodigo/Documentos/java/archivosRespaldo/
Son especialmente útiles las funciones de FileUtils:
String readFileToString(File file, Charset encoding) – Te permite leer el contenido de un archivo de texto y crear directametne un String.
public static void writeStringToFile(File file, String data, Charset encoding) – Permite crear un archivo de texto con el contenido de un String que se pasa como argumento junto con el encódig del mismo.
Pero además de estos ejemplos sencillos, FileUtils Apache Commons IO tiene otros métodos que pueden servirte.
- static String byteCountToDisplaySize(BigInteger size)
- static String byteCountToDisplaySize(long size)
- static Checksum checksum(File file, Checksum checksum)
- static long checksumCRC32(File file)
- static void cleanDirectory(File directory)
- static boolean contentEquals(File file1, File file2)
- static boolean contentEqualsIgnoreEOL(File file1, File file2, String charsetName)
- static File[] convertFileCollectionToFileArray(Collection<File> files)
- static void copyDirectory(File srcDir, File destDir)
- static void copyDirectory(File srcDir, File destDir, boolean preserveFileDate)
- static void copyDirectory(File srcDir, File destDir, FileFilter filter)
- static void copyDirectory(File srcDir, File destDir, FileFilter filter, boolean preserveFileDate)
- static void copyDirectoryToDirectory(File srcDir, File destDir)
- static void copyFile(File srcFile, File destFile)
- static void copyFile(File srcFile, File destFile, boolean preserveFileDate)
- static long copyFile(File input, OutputStream output)
- static void copyFileToDirectory(File srcFile, File destDir)
- static void copyFileToDirectory(File srcFile, File destDir, boolean preserveFileDate)
- static void copyInputStreamToFile(InputStream source, File destination)
- static void copyToFile(InputStream source, File destination)
- static void copyURLToFile(URL source, File destination)
- static void copyURLToFile(URL source, File destination, int connectionTimeout, int readTimeout)
- static void deleteDirectory(File directory)
- static boolean deleteQuietly(File file)
- static boolean directoryContains(File directory, File child)
- static void forceDelete(File file)
- static void forceDeleteOnExit(File file)
- static void forceMkdir(File directory)
- static void forceMkdirParent(File file)
- static File getFile(File directory, String… names)
- static File getFile(String… names)
- static File getTempDirectory()
- static String getTempDirectoryPath()
- static File getUserDirectory()
- static String getUserDirectoryPath()
- static boolean isFileNewer(File file, Date date)
- static boolean isFileNewer(File file, File reference)
- static boolean isFileNewer(File file, long timeMillis)
- static boolean isFileOlder(File file, Date date)
- static boolean isFileOlder(File file, File reference)
- static boolean isFileOlder(File file, long timeMillis)
- static boolean isSymlink(File file)
- static Iterator<File> iterateFiles(File directory, IOFileFilter fileFilter, IOFileFilter dirFilter)
- static Iterator<File> iterateFiles(File directory, String[] extensions, boolean recursive)
- static Iterator<File> iterateFilesAndDirs(File directory, IOFileFilter fileFilter, IOFileFilter dirFilter)
- static LineIterator lineIterator(File file)
- static LineIterator lineIterator(File file, String encoding)
- static Collection<File> listFiles(File directory, String[] extensions, boolean recursive)
- static Collection<File> listFilesAndDirs(File directory, IOFileFilter fileFilter, IOFileFilter dirFilter)
- static void moveDirectory(File srcDir, File destDir)
- static void moveDirectoryToDirectory(File src, File destDir, boolean createDestDir)
- static void moveFile(File srcFile, File destFile)
- static void moveFileToDirectory(File srcFile, File destDir, boolean createDestDir)
- static void moveToDirectory(File src, File destDir, boolean createDestDir)
- static FileInputStream openInputStream(File file)
- static FileOutputStream openOutputStream(File file)
- static FileOutputStream openOutputStream(File file, boolean append)
- static byte[] readFileToByteArray(File file)
- static String readFileToString(File file)
- static String readFileToString(File file, Charset encoding)
- static String readFileToString(File file, String encoding)
- static List<String> readLines(File file)
- static List<String> readLines(File file, Charset encoding)
- static List<String> readLines(File file, String encoding)
- static long sizeOf(File file)
- static BigInteger sizeOfAsBigInteger(File file)
- static long sizeOfDirectory(File directory)
- static BigInteger sizeOfDirectoryAsBigInteger(File directory)
- static File toFile(URL url)
- static File[] toFiles(URL[] urls)
- static void touch(File file)
- static URL[] toURLs(File[] files)
- static boolean waitFor(File file, int seconds)
- static void write(File file, CharSequence data)
- static void write(File file, CharSequence data, boolean append)
- static void write(File file, CharSequence data, Charset encoding)
- static void write(File file, CharSequence data, Charset encoding, boolean append)
- static void write(File file, CharSequence data, String encoding)
- static void write(File file, CharSequence data, String encoding, boolean append)
- static void writeByteArrayToFile(File file, byte[] data)
- static void writeByteArrayToFile(File file, byte[] data, boolean append)
- static void writeByteArrayToFile(File file, byte[] data, int off, int len)
- static void writeByteArrayToFile(File file, byte[] data, int off, int len, boolean append)
- static void writeLines(File file, Collection<?> lines)
- static void writeLines(File file, Collection<?> lines, boolean append)
- static void writeLines(File file, Collection<?> lines, String lineEnding)
- static void writeLines(File file, Collection<?> lines, String lineEnding, boolean append)
- static void writeLines(File file, String encoding, Collection<?> lines)
- static void writeLines(File file, String encoding, Collection<?> lines, boolean append)
- static void writeLines(File file, String encoding, Collection<?> lines, String lineEnding)
- static void writeLines(File file, String encoding, Collection<?> lines, String lineEnding, boolean append)
- static void writeStringToFile(File file, String data)
- static void writeStringToFile(File file, String data, boolean append)
- static void writeStringToFile(File file, String data, Charset encoding)
- static void writeStringToFile(File file, String data, Charset encoding, boolean append)
- static void writeStringToFile(File file, String data, String encoding)static void writeStringToFile(File file, String data, String encoding, boolean append)
Pronto agregaremos más ejemplos de otras funciones de FileUtils Apache Commons IO.
Más información en inglés: https://geekole.com/apache-commons-io-fileutils-in-java/