Fecha y hora actual: Jueves 17 Ene 2019 04:55
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

Curso VB .NET - Tema 1.38 - Archivos, Java

Responder al Tema

Índice del Foro > Visual Basic .NET > Curso VB .NET - Tema 1.38 - Archivos, Java

Autor Mensaje
Tesis
Administrador


Registrado: 04 Mar 2007
Mensajes: 3200
Ubicación: Valencia - España

Mensaje Publicado: Sábado 31 Oct 2009 19:36

Título del mensaje: Curso VB .NET - Tema 1.38 - Archivos, Java

Responder citando

Curso de programación en .NET - Tema 1.38 - Archivos, Java


1. Archivos, Java.
1.1 Objetivos del tema.

Ver el acceso a un archivo en Java, archivos sin estructura de datos..

1.2 Introducción.
En todos los lenguajes de programación el orden de ejecución del acceso a un archivo es el mismo.
Los requisitos serán conocer:

    El nombre del archivo
    Su ubicación en nuestro sistema
    La estructura del mismo.

A continuación necesitaremos conocer las distintas instrucciones disponibles en nuestro lenguaje para acceder al archivo en cuestión.

En Java para el acceso a los archivos es necesario importar
Código:
import java.io.*;


O bien
Código:
import java.io.File;
import java.io.FileWriter;
import java.io.FileReader;
import java.io.IOException;


Y después utilizar los métodos adecuados.

1.3 Abrir, acceder al archivo.
En la apertura de un archivo se pueden dar varias situaciones.
    Queremos grabar un nuevo archivo.
    Queremos grabar un archivo y ya existe.
    Queremos leer un archivo y éste puede existir o no.

En cualquier caso necesitaremos siempre un
    Nombre del archivo
    Ubicación del archivo.

La sintaxis de abrir un archivo para salida, grabación o escritura, es la siguiente.
Código:
package archivos;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Main {
   public static void main(String[] args)
   {
    try
    {
      String Nombre = "Pruebas.Txt";
      File Archivo;
      FileWriter Salida;
      Salida = null;
      Archivo = new File(Nombre);
      Salida = new FileWriter(Archivo);
    }
    catch (IOException ex)
    {
      Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
    }
   }
}


La explicación.
Definimos un objeto del tipo File, llamado Archivo.
Código:
File Archivo;


Definimos un objeto del tipo FileWriter, llamado Salida.
Código:
FileWriter Salida;


Inicializamos a nulo el objeto de salida.
Código:
Salida = null;


Creamos la referencia del Archivo, asignándole un nombre de archivo.
Código:
Archivo = new File(Nombre);


Creamos la referencia del objeto Salida, como un nuevo FileWriter con el objeto Archivo el cual ya existe como File con nombre asignado.
Código:
Salida = new FileWriter(Archivo);


De ésta forma se crea un archivo vacío en la ruta por defecto del proyecto en curso.
Hay que tener presente que cuando inicializamos la variable “Nombre” con el dato del nombre del archivo simultáneamente hay que indicar la dirección del archivo,
Código:
Try
   .. / ..
   }
   catch (IOException ex)
   {
      Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
   }


Es una instrucción de captura de errores, que se verá próximamente.
El siguiente paso es poder grabar datos en el mismo.

1.4 Grabar.
Si deseamos añadir datos al archivo utilizaremos el método write del objeto fila, o sea Salida.
Código:
Salida.write("Cadena de caracteres");
Salida.write("123456");


Otra cosa es que en función de nuestros conocimientos, esto nos parezca o no bien, o adecuado, pero ésta es la sintaxis para grabar datos, registros.
Por lo tanto para grabar una estructura de datos que en el mundillo de la gestión es lo necesario hay que implementar alguna herramienta, que luego veremos, desarrollaremos una clase.

1.5 Leer.
La lectura no es más complicada, claro, partiendo del supuesto de lo que se puede grabar, no puede ser mucho más compleja.
Código:
int Cadena;
FileReader Entrada;
Entrada = new FileReader(Archivo);
Cadena = Entrada.read();
while (Cadena != -1)
{
   System.out.print((char) Cadena);
   Cadena = Entrada.read();
}
Entrada.close();


Para la lectura definimos una variable
Código:
int Cadena;

Sí, de tipo entero.

Definimos el archivo de entrada del tipo FileReader, y le asignamos el archivo que venimos utilizando en el ejemplo.
Código:
FileReader Entrada;
Entrada = new FileReader(Archivo);


Solo nos queda establecer una estructura repetitiva
Código:
Cadena = Entrada.read();
while (Cadena != -1)
{
   System.out.print((char) Cadena);
   Cadena = Entrada.read();
}


Que también puede ser de ésta otra forma.
Código:
int Caracter;
Caracter = Entrada.read();
while (Caracter != -1)
{
   Frase = Frase + ((char) Caracter);
   Caracter = Entrada.read();
}


Se captura un valor antes del bucle y ya se ejecuta el While mientras haya datos en el archivo.
Para que todo funcione correctamente, a las clases importadas anteriormente hay que sumar ahora
Código:
import java.io.FileReader;


Ya que si no, carecemos de los objetos necesarios, y no podríamos utilizar ni Read ni FileReader.
Además para que todo lo visto, tanto en lectura como en escritura, funcione adecuadamente conviene establecer una captura de errores, por lo que todo lo expuesto debe ir entre
Código:
try
{
   // todo el ejemplo visto anteriormente
}
catch (IOException ex)
{
   Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}


Como se puede apreciar al inicio del ejemplo.

1.6 Cerrar.
Cerrar el archivo solo precisa de la utilización del método close.
Código:
Salida.close();
Entrada.close();


1.7 Conclusiones.
Las expectativas del manejo de archivos visto en el tema, para quien tenga nociones, le habrá parecido parca, y lo es, pero solo hemos visto la forma de acceder a un archivo de texto, sin que éste tenga una estructura definida.
En un tema posterior veremos el acceso a un archivo secuencial en el que se puede acceder a una estructura de datos conocida.

1.8 Ejercicios propuestos.
  1. Crear un archivo de texto con una frase cualquiera.
  2. Acceder al archivo anterior y visualizar la frase que se ha grabado.
  3. Crear un archivo y copiar el contenido del archivo anterior.
  4. Acceder al nuevo archivo y visualizar su contenido.


1.9 Solución a los ejercicios propuestos.
1.- Crear un archivo de texto con una frase cualquiera.
Código:
package tema_38;
import java.io.File;
import java.io.FileWriter;
import java.io.FileReader;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Main
{
   public static void main(String[] args) throws IOException
   {
      File Archivo;
      FileWriter Salida;
      String Nombre = "Pruebas.Txt";
      Salida = null;
      Archivo = new File(Nombre);
      Salida = new FileWriter(Archivo);
      String Frase;
      Frase = "Cualquier texto es bueno";
      Salida.write(Frase);
      Salida.close();
   }
}


2.- Acceder al archivo anterior y visualizar la frase que se ha grabado.
Código:
package tema_38;
import java.io.File;
import java.io.FileWriter;
import java.io.FileReader;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Main
{
   private static String LeerFrase(FileReader Entrada)
   {
      String Frase = "";
      int Letra;
      try
      {
         Letra = Entrada.read();
         while (Letra != -1)
      {
             Frase = Frase + ((char) Letra);
            Letra = Entrada.read();
         }
         Entrada.close();
      }
      catch (IOException ex)
      {
         System.out.println("Situación de error" + ex.getMessage());
      }
      finally
      {
         return Frase;
      }
   }

   public static void main(String[] args) throws IOException
   {
      File Archivo;
      FileReader Lectura;
      String Nombre = "Pruebas.Txt";
      Archivo = new File(Nombre);
      Lectura = new FileReader(Archivo);
      System.out.println(LeerFrase(Lectura));
      Lectura.close();
   }
}


3.- Crear un archivo y copiar el contenido del archivo anterior.
Código:
private static void Tres() throws IOException
{
   File Archivo;
   FileReader Lectura;
   String Nombre = "Pruebas.Txt";
   String Frase = "";
   Archivo = new File(Nombre);
   Lectura = new FileReader(Archivo);
   Frase = LeerFrase(Lectura);
   Lectura.close();
   
  File ArchivoNuevo;
   FileWriter Nuevo;
   Nombre = "Nuevo.Txt";
   Nuevo = null;
   ArchivoNuevo = new File(Nombre);
   Nuevo = new FileWriter(ArchivoNuevo);
   Nuevo.write(Frase);
   Nuevo.close();
}
public static void main(String[] args) throws IOException
{
   Tres();
}


4.- Acceder al nuevo archivo y visualizar su contenido.
Código:
private static String LeerFrase(FileReader Entrada)
{
   String Frase = "";
   int Letra;
   try
   {
      Letra = Entrada.read();
      while (Letra != -1)
    {
         Frase = Frase + ((char) Letra);
         Letra = Entrada.read();
      }
      Entrada.close();
   }
   catch (IOException ex)
   {
      System.out.println("Situación de error" + ex.getMessage());
   }
   finally
   {
      return Frase;
   }
}

private static void Cuatro() throws IOException
{
   File Archivo;
   FileReader Lectura;
   String Nombre = "Nuevo.Txt";
   Archivo = new File(Nombre);
   Lectura = new FileReader(Archivo);
   System.out.println(LeerFrase(Lectura));
   Lectura.close();
}

public static void main(String[] args) throws IOException
{
   Cuatro();
}




Autor del curso: casiopea


Normas del foro
Aprende a postear correctamente usando las etiquetas
Volver arriba
Ver perfil del usuario Enviar mensaje privado
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

necesito ayuda con el algoritmo de dijkstra en ...

mery Python 0 Jueves 13 Dic 2018 18:07 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Ayuda con TestNG Parametrico en java netbeans

baltigo Java 0 Sábado 30 Jun 2018 01:37 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Publicar Aplicación web JAVA en tomcat

Irvin Java Web 1 Viernes 13 Oct 2017 17:54 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Imagen referencial De creación de jtable en apl...

Jensel S.G Java 6 Miércoles 13 Sep 2017 20:06 Ver último mensaje
El tema está bloqueado: no pueden editarse ni agregar mensajes.

EMPLEO ANALISTA PROGRAMADOR/A BACK-END JAVA EE

GRUPOARESTORA Bolsa de trabajo 0 Viernes 23 Jun 2017 14:33 Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,