Título: Sobre-escritura de archivos JAVA
Publicado por: yesod en 26 Julio 2014, 03:18 am
Buenas noches compañeros, estoy intentando añadir mas datos a un archivo ya existente. Os pongo el código y os explico: import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import javax.swing.JOptionPane; public class EscribeFichero { static String usuario, host, puerto, nombrebd, alias, clave ; //static String clave = new String(AñadirConexion.passwordField.getPassword()); initComponents(); } //Sacar la clave desde el JPasswordField clave = new String(AñadirConexion. passwordField. getPassword()); //Recojo el texto introducido en las cajas de texto usuario=AñadirConexion.UsuarioField.getText(); host=AñadirConexion.HostField.getText(); puerto=AñadirConexion.PuertoField.getText(); nombrebd=AñadirConexion.BDField.getText(); alias=AñadirConexion.AliasField.getText(); //Declaro e inicio el prodecimiento lectura/escritura del archivo en cuestión File fichero = new File ("C:\\prueba.txt"); if (!fichero.exists()){ try{ pw.println(alias); pw.println(usuario+":"+clave+":"+host+":"+puerto+":"+nombrebd); JOptionPane. showMessageDialog(null, "Guardado correctamente"); e.printStackTrace(); } finally { try { //Nuevamente aprovechamos el finally para asegurarnos que se cierra el fichero. if (null != fichero) fw.close(); e2.printStackTrace(); } } }else{ //Busca todo el contenido entero de un texto y lo regresa en un String. StringBuilder contenido = new StringBuilder(); try { try { while ((linea = br.readLine()) != null){ contenido.append(linea); System. out. println("Dentro del bucle"); } if (null !=br){ br.close(); } System. out. println(contenido ); //Añado el contendo recogidos de los JTextField al StringBuilder "contenido" String field = alias +"\n"+usuario +":"+clave +":"+host +":"+puerto +":"+nombrebd ; contenido.append(field); System. out. println(contenido ); //Cambia el contenido de un archivo de texto en su totalidad.. sobreescribiendo el texto existente try { output.write(contenido.toString()); }finally { output.close(); } }finally { br.close(); } ex.printStackTrace(); } } } new EscribeFichero(); } }
Justo en ese bucle, en el que uso para hacer la lectura del archivo, no entra...¿alguna idea de porque, esta bien escrito por lo menos? He estado mirando ese bucle y, el problema que me da es que linea es null, por lo tanto no entra, pero he estado mirando las rutas del archivo en cuestión y estan correctas, por el simple hecho que hace la escritura, y comprueba que el archivo existe, pero no hace la lectura y no se porque... ¿Alguna idea?
Título: Re: Sobre-escritura de archivos JAVA
Publicado por: yesod en 27 Julio 2014, 18:38 pm
¿Enserio nadie sabe?
Título: Re: Sobre-escritura de archivos JAVA
Publicado por: ignorantev1.1 en 27 Julio 2014, 19:32 pm
Ponlo en etiqueta GeShi a tu código para que sea más legible. Si imprimes las excepciones (en caso de), seguramente te va a decir dónde está tu error: StringBuilder contenido = new StringBuilder(); try { try { while ((linea = br.readLine()) != null){ contenido.append(linea); System. out. println("Dentro del bucle"); } if (null !=br){ br.close(); } /*System.out.println(contenido); //Añado el contendo recogidos de los JTextField al StringBuilder "contenido" String field = alias+"\n"+usuario+":"+clave+":"+host+":"+puerto+":"+nombrebd; contenido.append(field); System.out.println(contenido); //Cambia el contenido de un archivo de texto en su totalidad.. sobreescribiendo el texto existente BufferedWriter output = new BufferedWriter(new FileWriter("C:\\prueba.txt")); try { output.write(contenido.toString()); }finally { output.close(); }*/ } br.close(); } } }
Saludos.
Título: Re: Sobre-escritura de archivos JAVA
Publicado por: yesod en 27 Julio 2014, 20:52 pm
El problema es que, por alguna razón no me lee el fichero...lo escribe correctamente pero no es capaz de leerlo
Llevo ya unos días investigando y no consigo dar con el fallo...hice debug y, el problema es que la variable br o linea como tal, se queda en null, no recoge el valor del buffer al leer la ruta del archivo.
PD: Ya corregí la parte del finally y le puse catch :D
Título: Re: Sobre-escritura de archivos JAVA
Publicado por: ignorantev1.1 en 27 Julio 2014, 21:09 pm
¿Y si colocas la lectura afuera del bucle? linea = br.readLine(); while (linea != null){ contenido.append(linea); linea = br.readLine(); System. out. println("Dentro del bucle"); } System. out. println("Fuera del bucle"); <--- ¿pasa por acá ?
Repito, edita tu post y activa las etiquetas, les facilitas el entendimiento a las personas que quieren ayudarte. Saludos.
Título: Re: Sobre-escritura de archivos JAVA
Publicado por: yesod en 27 Julio 2014, 21:29 pm
¿Y si colocas la lectura afuera del bucle?
Es que no se como ponerlo como dices, no se que tipo de etiqueta hay que poner...o a que botón darle para mejorar la lectura. ¿Y si colocas la lectura afuera del bucle?
Código
String linea; linea = br.readLine(); while (linea != null){ contenido.append(linea); linea = br.readLine(); System.out.println("Dentro del bucle"); } System.out.println("Fuera del bucle"); <--- ¿pasa por acá?
Esto fue lo primero que intenté hacer tras ver que no funcionaba y no me hace ni caso... System.out.println("Fuera del bucle"); <--- ¿pasa por acá?
Por ahí si pasa... PD: Ya he dado con el etiquetado correcto :D Gracias
|