Autor Tema: Java escritura archivos FileWriter BufferedWriter lectura FileReader BufferedRea  (Leído 2720 veces)

China

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 24
    • Ver Perfil
Buenas Noches tengo una problema con la lectura de archivo, tengo un metodo llamado lectura el cual estoy un archivo que tiene como separador "|", pero los datos los guardo mediante una matriz

Código: [Seleccionar]
public void Lectura() {

        String Linea;

        try {

            FileReader fr = new FileReader("C:\\Proyecto\\Banco.txt");
            BufferedReader br = new BufferedReader(fr);

            String matriz[][] = new String[lista.size()][5];
            int numlineas = 0;
            while (((Linea = br.readLine()) != null)) {
               
               
                String a[] = Linea.split("|");

                for (int i = 0; i < lista.size(); i++) {

                    matriz[numlineas][i] = a[i];

                }

                Linea = br.readLine();
                br.close();
            }
        }catch(Exception e){
            JOptionPane.showMessageDialog(null,e);
        }
Este metodo se lo paso a un evento tipo botón en si lo que quiero es que a momento de hacer mi operacion se modifique tanto en la tabla y el archivo, en la tabla si se modifica pero mi archivo no se modifica el saldo, Espero me puedan ayudar
« Última modificación: 06 de Agosto 2019, 22:35 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re:Lectura de archivos
« Respuesta #1 en: 07 de Octubre 2018, 22:32 »
Si quieres modificar el archivo, tendrás que usar las clases FileWriter y BufferedWriter de forma similar a como has usado los FileReader y BufferedReader.
Tendrás que construir un String con TODOS los datos (no solo los cambiados) de la matriz, poniendo el separador "|" ahí donde deba ir y también los caracteres para crear saltos de línea (puedes usar el caracter especial "\n")
Luego le pasas ese String al metodo writer() del objeto BufferedWriter y lo escribirá en el archivo de texto, eliminando lo que hubiera previamente.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

China

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 24
    • Ver Perfil
Re:Lectura de archivos
« Respuesta #2 en: 13 de Octubre 2018, 20:16 »
Hice esto pero lo que hace es agrega una linea nuevapero lo que quiero es que me modifique la misma linea pero no se como pasarlos,  listaes un arraylist que tiene una clase llamada banco esa clase contiene get y set este es el codigo que tengo
Código: [Seleccionar]

                 
                 BufferedWriter bw = null;
       try {
           bw = new BufferedWriter(new FileWriter(archivo, true));
           
           
           Banco b = new Banco(ncuenta,tcuenta,cliente,banco,saldo);
           for (int i = 0; i < lista.size(); i++) {
               
               if(jTextField1.getText().equals(lista.get(i).getNcuenta())){
                 
           
                   lista.get(i).setTcuenta(jComboBox1.getSelectedItem().toString());
                   lista.get(i).setCliente(jTextField2.getText());
                   lista.get(i).setBanco(jComboBox2.getSelectedItem().toString());
                   lista.get(i).setSaldo(jTextField3.getText());
             
                  bw.write(b.toString());
                  bw.newLine();
                 
               }
               
           } 
           // para limpiar lo que tiene los jtexfield entre otros
           jTextField1.setText("");
           jComboBox1.setSelectedItem("");
           jTextField2.setText("");
           jComboBox2.setSelectedItem("");
           jTextField3.setText("");
           
//Este es para que lo muestre en la tabla
           String matriz [][]= new String [lista.size()][5];
           for(int i = 0; i < lista.size(); i++){
               
               matriz[i][0] = lista.get(i).getNcuenta();
               matriz[i][1] = lista.get(i).getTcuenta();
               matriz[i][2] = lista.get(i).getCliente();
               matriz[i][3] = lista.get(i).getBanco();
               matriz[i][4] = lista.get(i).getSaldo();
           }      jTable1.setModel(new javax.swing.table.DefaultTableModel(
                   matriz,
                   new String [] {
                       "No.Cuenta", "Tipo de cuenta", "Cliente", "Banco", "Saldo"
                           
                   }
                   
           ));
         
            bw.close();
       } catch (IOException ex) {
           Logger.getLogger(FormularioBanco.class.getName()).log(Level.SEVERE, null, ex);
       }
       

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re:Lectura de archivos
« Respuesta #3 en: 13 de Octubre 2018, 21:22 »
Es importante familiarizarse con la documentación oficial de Oracle.

Se te añade la linea porque al objeto FileWriter le estás pasando true como parametro.
Citar
bw = new BufferedWriter(new FileWriter(archivo, true));

Si miras la docu oficial verás que al pasarle true, le estamos dando orden de que los próximos datos a escribir se añadan al final del documento.

Si no queremos añadir nuevas líneas, como será en este caso, debemos indicarle false (o no indicar nada)
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".