Programacion‎ > ‎

Crear archivos planos

En esta sección vamos a mostrar como crear un archivo de texto simple desde Java. Utilizaremos herramientas comunes como lo son Eclipse IDE Luna y JDK 1.7 corriendo en una maquina Windows 10.

1. Ingrese por la opción File->New y en la ventana emergente busque Java Project, haga click en el botón "Next >"

2. Asignarle un nombre al proyecto, en este caso vamos a usar "ArchivosPlanos", Eclipse le da la opción de cambiar la maquina virtual y los directorios que va a usar, por el momento lo vamos a dejar todo por defecto, para terminar haga click en el botón "Finish"
Setteo de un nuevo proyecto
3. Eclipse creo un proyecto con la siguiente estructura:
Estructura del nuevo proyecto
4. Haga click derecho en el folder src y seleccione la opcion New->Package, Eclise solicta que ingrese el nombre del paquete, para el caso nuestro vamos a utilizar co.net.seft.entrenamiento.archivosplanos y despues haga click en el boton "Finish"
Creando un nuevo paquete
5. Ahora dentro del nuevo paquete, vamos a crear una clase con su respectivo método main. Hacemos click derecho sobre el paquete que acabamos de crear, seleccionamos la opción New->Class, y Eclipse nos va mostrar la siguiente pantalla y llenamos el campo de nombre de clase como ArchivoPlanoManager, después marcamos el checkbox de public static void main (String argv[]).




6. Eclipse genero una clase vacia con la siguiente estructura:

package co.net.seft.entrenamiento.archivosplanos;

public class ArchivoPlanoManager {

public static void main(String[] args) {
// TODO Auto-generated method stub

}

}

7. Vamos a construir dos métodos, uno para escribir el archivo y otro para leerlo. El método de escritura se va llamar writer y el metodo de lectura reader.

public void reader(String fileName){

}

public void writer(String fileName){

}


8. En el método writer vamos a crear un file que escriba cuatro lineas, cada una con el numero de linea e igual numero de caracteres 'x' de la siguiente manera.

public void writer(String fileName) {

FileWriter archivo = null;

PrintWriter printWriter = null;

try {

archivo = new FileWriter(fileName);

printWriter = new PrintWriter(archivo);


for (int i = 0; i < 4; i++) {

String linea = "" + i;

for (int j = 0; j < i; j++) {

linea += "x";

}

printWriter.println(linea);

}


} catch (Exception e) {

e.printStackTrace();

} finally {

try {

if (null != archivo)

archivo.close();

} catch (Exception e2) {

e2.printStackTrace();

}

}

}


En este caso el método writer recibe como parámetro el nombre del file a escribir, lo abre mediante el objeto FileWriter y coloca un apuntador de salida (PrintWriter) en el archivo abierto, después ejecuta la lógica de negocio para crear la linea, una vez completada la creación de la linea, la escribe en el archivo mediante el comando printWriter.println(linea);Una vez escritas todas las lineas, se procede a cerrar el file; se utiliza en el bloque finally para evitar que el archivo quede abierto si existe alguna falla en la escritura.

9. En el método reader vamos a leer el file que escribimos e imprimir por pantalla el contenido del file.

public void reader(String fileName) {

File archivo = null;

FileReader fileReader = null;

BufferedReader bufferedReader = null;


try {

archivo = new File(fileName);

fileReader = new FileReader(archivo);

bufferedReader = new BufferedReader(fileReader);


String linea;

while ((linea = bufferedReader.readLine()) != null) {

System.out.println(linea);

}


} catch (Exception e) {

e.printStackTrace();

} finally {

try {

if (null != fileReader) {

fileReader.close();

}

} catch (Exception e2) {

e2.printStackTrace();

}

}

}

Utilizamos un objeto File para recibir el archivo, y lo abrimos mediante un objeto FileReader, el contenido lo extraemos mediante un objeto BufferedReader, sobre el cual vamos a iterar para leer cada una de las lineas. Utilizamos un ciclo while con el código (linea = bufferedReader.readLine()) != nullpara realizar la impresión de las lineas hasta que encuentre el fin de linea del file.

Una vez alcanzamos el final de archivo procedemos a cerrar el objeto BufferedReader dentro del bloque finally de la excepcion para evitar que quede abierto el file si algo sale mal en la lectura.


10. Finalmente ponemos todo junto para ser invocado con el main de la siguiente manera.

public static void main(String[] args) {

ArchivoPlanoManager archivoPlanoManager=new ArchivoPlanoManager();

String archivo="c:/Temp/pruebas.txt";

archivoPlanoManager.writer(archivo);

archivoPlanoManager.reader(archivo);

}


Instanciamos la clase que acabamos de crear en la lineas ArchivoPlanoManager archivoPlanoManager=new ArchivoPlanoManager();  posteriormente invocamos el método writer y despues le método reader. La salida de consola de este programa debe ser igual al contenido del archivo.

0

1x

2xx

3xxx

Y el código poniendo todo junto seria:

package co.net.seft.entrenamiento.archivosplanos;


import java.io.BufferedReader;

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.PrintWriter;


public class ArchivoPlanoManager {


public static void main(String[] args) {

ArchivoPlanoManager archivoPlanoManager=new ArchivoPlanoManager();

String archivo="c:/Temp/pruebas.txt";

archivoPlanoManager.writer(archivo);

archivoPlanoManager.reader(archivo);

}


public void reader(String fileName) {

File archivo = null;

FileReader fileReader = null;

BufferedReader bufferedReader = null;


try {


archivo = new File(fileName);

fileReader = new FileReader(archivo);

bufferedReader = new BufferedReader(fileReader);


String linea;

while ((linea = bufferedReader.readLine()) != null) {

System.out.println(linea);

}


} catch (Exception e) {

e.printStackTrace();

} finally {

try {

if (null != fileReader) {

fileReader.close();

}

} catch (Exception e2) {

e2.printStackTrace();

}

}


}


public void writer(String fileName) {

FileWriter archivo = null;

PrintWriter printWriter = null;

try {

archivo = new FileWriter(fileName);

printWriter = new PrintWriter(archivo);


for (int i = 0; i < 4; i++) {

String linea = "" + i;

for (int j = 0; j < i; j++) {

linea += "x";

}

printWriter.println(linea);

}


} catch (Exception e) {

e.printStackTrace();

} finally {

try {

if (null != archivo)

archivo.close();

} catch (Exception e2) {

e2.printStackTrace();

}

}

}


}

Comments