Como seguramente sabreis, cuando se compila en Java, no se genera un programa ejecutable, sino que se compila en un código intermedio llamado bytecode, que es el que la máquina virtual de Java (JVM) se encarga de interpretar en tiempo de ejecución.
Este código se guarda en unos archivos .class que a su vez se empaquetan en un archivo .jar, junto con información de la clase principal y otros archivos, como los archivos de recursos, que es de lo que trata este artículo.
Es posible que estemos trabajando con un pequeño programa que dependa de unos datos, y que no queramos la complejidad de un motor de bases de datos, sino simplemente un archivo de texto del que cargar información (Por ejemplo, una lista de direcciones de e-mail para hacer un proceso).
Java nos permite meter este archivo dentro de nuestro .jar, y facilitar el proceso de transmisión del programa (así nos aseguramos a la hora de distribuirlo que no se nos queda nada por el camino).
Adjuntar el archivo es sencillo si utilizamos un entorno integrado de desarrollo (IDE) como NetBeans, simplemente lo agregamos desde el menú, y ya estará en nuestro .jar en la siguiente compilación.
Seguidamente, para cargarlo, usamos la siguiente secuencia:
InputStream fop = Main.class.getResourceAsStream("file.txt"); String line; try { BufferedReader reader = new BufferedReader(new InputStreamReader(fop, "UTF-8")); while ((line = reader.readLine()) != null) { /* Aquí agregamos nuestra lógica */ } } finally { fop.close(); }
La explicación de este código es simple:
La primera línea localiza el archivo, por así decirlo, en el mismo directorio que nuestra clase Main se encuentra.
La siguiente línea importante crea un BufferedReader, y establece la codificación de nuestro archivo para efectuar la lectura.
BufferedReader reader = new BufferedReader(new InputStreamReader(fop, "UTF-8"));
Por último, realizamos una lectura secuencial del archivo usando
while ((line = reader.readLine()) != null)
Y tendremos en line una cadena de caracteres que podremos modificar como queramos o cargarla en un elemento de nuestra interfaz. Espero que os sea útil.
Más información acerca de InputStream en la Documentación de Java.
Muy bueno. Gracias