Modificar un archivo en Java.

Iniciado por DiiaNa1501, 2 Marzo 2014, 20:36 PM

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

DiiaNa1501

Hola!!! Estoy realizando un programa en el cual en una clase tengo las funciones del archivo que son leer y escribir y en el main debo instanciar dicha clase para modificarlo, pero cada que hago Archivo ar =new Archivo("Prueba.txt"); estoy creando un nuevo archivo.
En la misma clase main escribo entonces
if(!ar.exist()){
ar.createnewfile();
ar.escribir("Hola");
ar.escribir ("Buenos dias");
}
sin embargo en el archivo aparece únicamente el último mensaje.
¿Me podrían ayudar con esto?
Gracias de antemano ;)

ThinkByYourself

Para seguir escribiendo a continuación de lo que hay en el fichero, usa la clase BufferedWriter que tiene el método "append(String)" para apendizar texto.

Saludos
No te voy a engañar.
Todos hemos sido programados para normalizar la psicopatía de las élites económicas y políticas, y para realimentar su patrón de ciega codicia.

DiiaNa1501

package ficheros;

import java.io.*;
import java.util.*;

public class funcar{
File file;
FileReader fr;
FileWriter fw;
BufferedReader br;
BufferedWriter bw;


public void OpenFile(){
    try {
        File file2;
        file2=new File("si.txt");
        if(!file2.exists()){
             file2.createNewFile();
             System.out.println("Ha sido creado un nuevo archivo");
        }
        if(file2.exists()){
        file=file2;
        fr = new FileReader(file);
        br=new BufferedReader(fr);
        fw=new FileWriter(file);
        bw=new BufferedWriter(fw);}
    } catch (Exception ex) {
        System.out.println("Error en el abrir de archivos: "+ex.toString());
    }
}
public void CloseFile(){
    try { 
        br.close();
        fr.close();
        bw.close();
        fw.close();
    } catch (Exception e) {
         System.out.println("Error al cerrar el archivo: "+e.toString());   
    }
       
}

public void Escribir(String m){
    try {
        OpenFile();
        String a="", aux="";
        //bw.write("Hola");
        while((aux=br.readLine())!=null){
            a+=aux;}
        bw.write(a+" "+m);
        CloseFile();
    } catch (Exception e) {
        System.out.println("Error al escribir en el archivo: "+e.toString());
    }
       
        }
}

En la clase main:
package ficheros;

import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;


public class Ficheros {



    public static void main(String[] args) {
        funcar fi=new funcar();
        fi.Escribir("Hi!");
        fi.Escribir("Mío");
       
    }
           
    }

aún así sigue apareciendo en el archivo sólo el String "Mío" :-[ perdona cualquier error y por favor dime en qué fallo si puedes  ;D

ThinkByYourself

En el momento de lectura invocas al método "write(String)":

Código (java) [Seleccionar]
while((aux=br.readLine())!=null){
a+=aux;}
bw.write(a+" "+m);


En lugar de eso, es mejor crear un PrintWriter (me equivoqué al decirte BufferedWriter, me ha venido ahora la clase a la cabeza, es PrintWriter) te sirve para apendizar el contenido en lugar de sobreescribirlo o reemplazar lo que hubiera. Ejemplos de uso hay en internet para aburrirse.

Saludos y espero que sirva!
No te voy a engañar.
Todos hemos sido programados para normalizar la psicopatía de las élites económicas y políticas, y para realimentar su patrón de ciega codicia.