Algunas API’s Java que te pueden servir: commons-io
commons-io trae un montón de clases que te pueden servir al momento de utilizar lecturas y escrituras de archivos, entre otras cosillas.
Por si no lo sabías una de las malas practicas mas recurrentes programando con java es, no cerrar los Stream y ciertos Readers adecuadamente, o te complicas mucho con los try/catch, vamos a ver un par de ejemplos clásicos:
Primero agregamos la dependencia de maven, ojo que las versiones 2.x están escritas para Java 1.5 y las 1.x para java 1.3 y 1.4:
<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.0.1</version> </dependency>
Caso 1: finally que asegura cerrar el Reader con el método close()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public void closeWithFinally(String filename) throws IOException { BufferedReader reader = new BufferedReader(new FileReader(filename)); try { StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line); } String contentFile = sb.toString(); System.out.println(contentFile); } finally { // Cerrar el reader reader.close(); } } |
Caso 2: Creando la instancia de BufferedReader dentro del try y validando si es null al momento de cerrar:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public void closeWithFinallyNullCheck(String filename) throws IOException { BufferedReader reader = null; try { reader = new BufferedReader(new FileReader(filename)); String line = null; StringBuilder sb = new StringBuilder(); while ((line = reader.readLine()) != null) { sb.append(line); } String contentFile = sb.toString(); System.out.println(contentFile); } finally { // Cerrar el reader if (null != reader) { reader.close(); } } } |
Caso 3: Usando commons-io y la clase IOUtils se reduce bastante el código y quedaría algo así:
1 2 3 4 5 6 7 8 9 | public void closeWithFinallyCommonsIO(String filename) throws IOException { BufferedReader reader = new BufferedReader(new FileReader(filename)); try { String contentFile = IOUtils.toString(reader); System.out.println(contentFile); } finally { IOUtils.closeQuietly(reader); } } |
Mas información en el maven site del proyecto:
Mas adelante escribiré un par de ejemplos con otras clases de commons-io que son bastante útiles.
Mirá vos, ah.
La raja.
10 jumbitos para commons-io