Java - Ayuda con escribir en la siguiente línea vacia de un fichero de texto

 
Vista:
Imágen de perfil de jose
Val: 64
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda con escribir en la siguiente línea vacia de un fichero de texto

Publicado por jose (73 intervenciones) el 10/10/2021 19:56:32
Buenos tardes,

Intento conseguir que una función de java anote un texto en la siguiente línea vacía de dicho archivo.

No sé donde tengo el fallo, pero siempre me elimina el contenido de todo el archivo.

Este es el código que tengo hecho:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public void guardarMensaje(String pathStr, int primerMes,int ultimoMes,int sumaDiasTotal) {
		File pathFile = new File(pathStr);
 
		DateTimeFormatter hora = DateTimeFormatter.ofPattern("HH:mm:ss");
		FileReader fr = null;
		BufferedReader br = null;
		FileWriter fichero = null;
		PrintWriter pw = null;
 
 
		try {
			fr = new FileReader(pathStr);
			br = new BufferedReader(fr);
			fichero = new FileWriter(pathStr);
			pw = new PrintWriter(fichero);
			String line = "";
 
 
		     while ((line= br.readLine())!=null) {
		    	 System.out.println(line);
		    	  //line = br.readLine();
		          pw.println("El número total de días entre el mes " + primerMes + " y el mes " + ultimoMes+ " es de :" + sumaDiasTotal + " días. A las "+hora.format(LocalDateTime.now()));
 
		       }
 
			System.out.println("Datos añadidos al archivo");
		} catch (Exception e) {
			System.out.print("Error: " + e);
		} finally {
			try {
				if (null != fr )
					fr.close();
					fichero.close();
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}
 
	}

Espero que alguien me pueda ayudar a entender que pasa.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda con escribir en la siguiente línea vacia de un fichero de texto

Publicado por Tom (1831 intervenciones) el 11/10/2021 12:08:40
Pasa que hay que leer :)
https://docs.oracle.com/javase/tutorial/essential/io/file.html
https://docs.oracle.com/javase/8/docs/api/java/io/PrintWriter.html

El constructor que usas es (copio y pego):

public PrintWriter(File file)
throws FileNotFoundException

Creates a new PrintWriter, without automatic line flushing, with the specified file. This convenience constructor creates the necessary intermediate OutputStreamWriter, which will encode characters using the default charset for this instance of the Java virtual machine.

Parameters:
file - The file to use as the destination of this writer. If the file exists then it will be truncated to zero size; otherwise, a new file will be created. The output will be written to the file and is buffered.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de jose
Val: 64
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda con escribir en la siguiente línea vacia de un fichero de texto

Publicado por jose (73 intervenciones) el 11/10/2021 13:25:30
Hola Tom,

Perdona, pero no entiendo muy bien lo que comentas. Podrías darme un ejemplo.

Más o menos lo que quiero hacer es lo quiero hacer es que no cambie o elimine el contenido de un archivo. Lo que quiero es que añada una línea nueva al archivo.

Por otra parte la función que estoy utilizando "public void guardarMensaje(String pathStr, int primerMes,int ultimoMes,int sumaDiasTotal)", no tiene argumentos de tipo File.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de jose
Val: 64
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda con escribir en la siguiente línea vacia de un fichero de texto

Publicado por jose (73 intervenciones) el 11/10/2021 13:53:09
He modificado el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public void guardarMensaje(int posicion, String pathStr, int primerMes,int ultimoMes,int sumaDiasTotal) {
		File pathFile = new File(pathStr);
 
		DateTimeFormatter hora = DateTimeFormatter.ofPattern("HH:mm:ss");
		FileReader fr = null;
		BufferedReader br = null;
		BufferedWriter bw = null;
 
 
		try {
			fr = new FileReader(pathStr);
			br = new BufferedReader(fr);
 
			bw = new BufferedWriter(new FileWriter(pathFile,true));
			String line;
 
		         bw.write("El número total de días entre el mes " + primerMes + " y el mes " + ultimoMes+ " es de :" + sumaDiasTotal + " días. A las "+hora.format(LocalDateTime.now()));
		         bw.newLine();
 
		} catch (Exception e) {
			System.out.print("Error: " + e);
		} finally {
			try {
				if (null != fr)
					fr.close();
					bw.close();
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}
		System.out.println("Datos añadidos al archivo");
 
	}

El resultado es el que buscaba.

Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar