Abrir un archivo

    Abrir un archivo en Java es sencillo, y mas sencillo aún si se trata de un archivo de texto, que es lo que explicare en esta entrada.

    En la entrada anterior, explicaba como abrir un área de texto utilizando "JFileChooser", pero no explique que también podemos visualizar cualquier tipo de archivo o documento de texto desde la consola de Java.

    Este es un código muy sencillo, es fácil de implementar y muy útil al momento de crear programas que trabajen en segundo plano. Para lograr que Java pueda mostrar estos archivos o documentos de texto, debemos cargarlos, leerlos e interpretarlos, utilizando una variable del tipo "int" y otra del tipo char".

    El ejemplo es el siguiente:

import java.io.*;

public class archivolee
{
public static void main (String [] ars)
{
int c;
try
{
FileInputStream f = new FileInputStream ("NOMBRE_DEL_ARCHIVO.EXTENSION");
while ((c=f.read())!=-1)
{
System.out.print((char)c);
}
}
catch (IOException e)
{
System.out.println("problema de entrada"+" (revisar si el archivo exite).");
}
}
}

    Y como siempre la explicación de lo que hay en el código.

- int c

    Creamos una variable del tipo numérico que sera un número entero, y la llamamos "c". Para decirlo de otra forma más sencilla, creamos una variable del tipo "int".

- FileInputStream f = new FileInputStream ("NOMBRE_DEL_ARCHIVO.EXTENSION")

    Creamos una variable del tipo entrada que es "FileInputStream" y la llamamos "f", esta almacenara los caracteres que se encuentre en el archivo que estamos intentando abrir. El archivo a abrir debe colocarse con su extensión, entre parentesis y comillas, y debe estar en la carpeta donde compilamos el programa.

    La extensión puede ser ".txt" o ".doc, inclusive si creamos un archivo desde cualquier editor de texto, como el bloc de notas, y colocamos que la extensión sea ".asd" (es un ejemplo) el programa lo cargara sin problema alguno, ya que su contenido es del tipo texto.

- while ((c=f.read())!=-1)

   Mientras la variable "c" sea distinto de "-1", seguira con el código.

    "c=f.read()" significa que la variable del tipo "int", llamada "c", almacenara todo el contenido que se encuentra en la variable del tipo "FileInputStream", llamada "f". Si no me explico bien, lo digo de otra forma.

    "f.read()" leera todos los caracteres que se encuentren almacenados en la variable "f", y "c=f.read()" le indica al programa que lo que se esta leyendo sera almacenado en la otra variable llamada "c".

    Colocamos que la condición sea distinto de "-1", ya que ese valor es igual a un valor nulo, es decir que "-1 = null".

- System.out.print((char) c)

    Esto muestra por pantalla, en la consola estilo DOS, el contenido de la variable "c". Pero antes de mostrar ese contenido, los caracteres almacenados en la variable "c" son transformados, es decir que del tipo "int" los cambiamos al tipo "char".

    La razón por la que convertimos de "int" a "char" es porque estos archivos se leen en forma de "bytes", por eso hacemos la conversión, para que el programa primero interprete y luego podamos vizualizar de forma legible el resultado.

    El resto del código que encontramos en el programa ya lo he explicado varias veces, por lo que veo innecesario explicar lo demas. También debo decir que este ejemplo lo he hecho para que comprendamos un poco más sobre como Java maneja el uso de archivos.

    La forma en que un programa crea un archivo varia, dependiendo de cuales sean las sentencias que utilice para crearlo. Por ejemplo, si creamos un archivo en "FoxPro" o "Visual Basic", la forma en que estos crean un archivo es distinta a la forma en que "Java" lo hace. Pero lo que si es igual, o muy parecido, es la forma en la que el computador lee e interpreta dicho código para que nos muestre un resultado que podamos entender.



2 Comentarios

Escribir Comentario
Anónimo
AUTOR
5 de diciembre de 2012, 22:53 delete

Muchas gracias me ha servido mucho pero cuando mencionas a que el archivo debe estar en la carpeta donde compilamos el programa a que te refieres?

Responder
avatar
5 de diciembre de 2012, 23:09 delete

Me alegra que te funcionara, y lo digo por esta línea del código:

FileInputStream ("NOMBRE_DEL_ARCHIVO.EXTENSION");

Si estamos compilando en otra carpeta distinta a donde se ubica el archivo entonces deberemos indicar la ruta del mismo, en cambio así solo debemos colocar el nombre ya que el archivo esta junto al resto, sin complicarnos mucho.... Saludos!!

Responder
avatar

Lamentablemente hay muchos usuarios en la red que han llegado al blog para escribir obscenidades, así que la moderación se hace necesaria. Recuerda utilizar un lenguaje correcto y espera a que sea aprobado.

Si necesitas publicar código haz click en "Conversión" para hacerlo legible.
ConversiónConversión