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 ;)
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
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
En el momento de lectura invocas al método "write(String)":
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!