Autor Tema: Clase File Java  (Leído 6747 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado realbo

  • -^- Elite Gold -^-
  • The Communiter-
  • **
  • Mensajes: 2720
Clase File Java
« : enero 10, 2006, 09:12:17 am »
mara :mara: tengo un clavo necesito crear un archivo plano y que lo guarde en el directorio raiz, esto ya lo tengo pero el clavo que tengo es como hacer para abrir ese archivo modificarlo y guardarlo sin perder los datos que contiene, estoy haciendo un log que guarde un historial de problemas aca esta la forma de como creo el archivo aca esta bien pero como hago para modificarlo sin perder los cambios? yo lo hice hace tiempo pero no recuerdo como se hace y me urge esta onda

Citar
FileWriter bitacora = new FileWriter("c:\\bitacora.txt");            
BufferedWriter bw = new BufferedWriter(bitacora);
PrintWriter salida = new PrintWriter(bw);
salida.println(formato.format(fecha) + " No se pudo enviar archivo al controlador " + ioe.getMessage());
salida.close();


Desconectado mxgxw

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 5665
  • Starlet - 999cc
    • mxgxw
Re: Clase File Java
« Respuesta #1 : enero 10, 2006, 12:19:42 pm »
Mira, si necesitas leer y escribir lo puedes hacer utilizando la clase RandomAccessFile...

Código: [Seleccionar]

        try {
            // Creación del archivo de acceso aleatorio
            java.io.RandomAccessFile archivo = new java.io.RandomAccessFile("c:\\prueba.txt","rw");
           
           
            // Desplazamiento por el archivo:
            archivo.seek(0);
           
            // Escritura de datos:
            archivo.writeBytes("Prueba de texto\n");
           
            archivo.seek(0);
            // Lectura de datos:
            System.out.println(archivo.readLine());
           
            // Sobreescritura de datos:
            archivo.seek(10);
            archivo.writeBytes("datos\n");
           
            // Lectura de datos:
            archivo.seek(0);
            System.out.println(archivo.readLine());
           
            archivo.close();           
        } catch(java.io.IOException e) {};

Ahora, puedes leer y escribir tipos basicos en forma binaria con las funciones read y write.

Aquí esta la salida del ejemplo anterior:

Código: [Seleccionar]
Prueba de texto
Prueba de datos

Si como dices solo estas haciendo un registro, también podes utilizar el FileWriter en modo append, solo que abrilo de esta manera:

Código: [Seleccionar]
FileWriter bitacora = new FileWriter("c:\\bitacora.txt",true);
     

Así todos los datos nuevos solo serian agregados al final del archivo. Para un registro esta es la manera mas adecuada de hacerlo.

Te quedaría así:

Código: [Seleccionar]
FileWriter bitacora = new FileWriter("c:\\bitacora.txt",true);           
BufferedWriter bw = new BufferedWriter(bitacora);
PrintWriter salida = new PrintWriter(bw);
salida.println(formato.format(fecha) + " No se pudo enviar archivo al controlador " + ioe.getMessage());
salida.close();
« Última Modificación: enero 10, 2006, 12:22:13 pm por mxgxw »


Desconectado realbo

  • -^- Elite Gold -^-
  • The Communiter-
  • **
  • Mensajes: 2720
Re: Clase File Java
« Respuesta #2 : enero 10, 2006, 12:25:36 pm »
gracias  :thumbsup: fijate que lo resolvi de la siguiente forma  ke es practicamente lo mismo que me recomendaste

primero verifico si existe el archivo sino existe lo creo

 
Citar

   public boolean existearchivo(){
      File archivo = new File(RUTA);
      if(archivo.exists())
         return true;      
      else
         return false;
   }

   public void creararchivo(){
      try {
         FileWriter archivo = new FileWriter(RUTA);      
      } catch (IOException e) {         
         System.out.println("Error al crear archivo: " + e.getMessage());         
      }
   }

if(!existearchivo())      
creararchivo();


ya despues sigo el curso normal y escribo en el al mandarle true en el FileWriter lo que hago es decirle que me lo agrege al final del archivo es decir me conserva todo lo anterior 

Citar
FileWriter fw = new FileWriter(RUTA, true);
fw.write("Mensaje \n");fw.close();
« Última Modificación: enero 10, 2006, 12:28:16 pm por realbo »