Algunas APIs Java que te pueden servir: commons-io

1 minuto de lectura

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()

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:

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í:

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.

Comentar