Manejo de ficheros de texto y binarios en Java

/* Otro ejemplo de lectura de fichero de texto, de transferencia de texto de teclado a fichero de texto y de copiado de fichero binario a otro fichero binario. */

package manejoficheros;

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

public class ManejoFicheros {

/*
 * @author RLR
 */

    public static void main(String[] args) 
    {
        Scanner miTeclado = new Scanner(System.in);

        //LEEMOS UN FICHERO DE TEXTO
        System.out.print("Da nombre del fichero de texto a leer: ");
        String s = miTeclado.next();        
        LeerFichero(s);        

        //ESCRIBIMOS TEXTO DESDE TECLADO A FICHERO DE TEXTO
        System.out.print("Da nombre del fichero de texto donde escribir: ");
        String s1 = miTeclado.next();        
        EscribirFichero(s1);

        //TRANSFERIMOS DATOS DE UN FICHERO BINARIO A OTRO
        System.out.print("Da nombre del fichero binario a transferir: ");
        String s2 = miTeclado.next();                
        System.out.print("Da nombre del fichero binario donde transferir: ");
        String s3 = miTeclado.next();        
        CopiarFichero(s2,s3);                

    }

    // METODOS    

    public static void LeerFichero(String namefile) 
    {
      File fich = null;
      FileReader fichr = null;
      BufferedReader bf = null;

      try 
      {
         // Apertura del fichero y creacion de BufferedReader
         // para hacer lectura con readLine()
         fich = new File (namefile);
         fichr = new FileReader (fich);
         bf = new BufferedReader(fichr);

         // Lectura del fichero y escritura en pantalla
         String line;
         while((line=bf.readLine())!=null)
            System.out.println(line);
      }
      catch(Exception e)
      {
         e.printStackTrace();
      }
      finally
      {
         // En el finally cerramos el fichero con
         // control de excepcions
         try
         {                    
            if( bf != null )
            {   
               bf.close();     
            }                  
         }
         catch (Exception e2)
         { 
            e2.printStackTrace();
         }
      }
   }

     public static void EscribirFichero(String namefile)
    {
        FileWriter fich = null;
        PrintWriter pw = null;

        try
        {
            fich = new FileWriter(namefile);
            pw = new PrintWriter(fich);
            int i=0;                                  

             //Leemos texto de teclado y volcamos en fichero
            Scanner miTeclado = new Scanner(System.in);            

            System.out.println("ESCRIBE TEXTO ACABADO EN '.': ");

            String s = miTeclado.nextLine();                                          
            while(!s.equals("."))
            {
                pw.print("Linea " + (++i) + ": ");
                pw.println(s);
                //pw.write(s);                
                //pw.newLine();
                s = miTeclado.nextLine();            
            }

        } 
        catch (Exception e) 
        {
            e.printStackTrace();
        } 
        finally 
        {
           try 
           {
           // Aseguramos que se cierra el fichero.
           if (pw != null)
              pw.close();
           } 
           catch (Exception e2) 
           {
              e2.printStackTrace();
           }
        }
    }

    public static void CopiarFichero (String file1, String file2)
    {

               FileInputStream fInp  = null;    
               BufferedInputStream bfInp = null;
               FileOutputStream fOut = null;
               BufferedOutputStream bfOut = null;

        try
        {
            // Se abre fichero1 para lectura
            fInp = new FileInputStream(file1);
            bfInp = new BufferedInputStream(fInp);

            // Se abre fichero2 donde hacer copia
            fOut = new FileOutputStream (file2);
            bfOut = new BufferedOutputStream(fOut);

            // Transferencia de un fichero a otro 
            byte [] array = new byte[100];
            int bytesleidos = bfInp.read(array);
            while (bytesleidos > 0)
            {
                bfOut.write(array,0,bytesleidos);
                bytesleidos=bfInp.read(array);
            }

        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        finally
        {
                    // Cierre de ficheros
                    try
                    {
                     bfInp.close();
                     bfOut.close();
                    }
                    catch (Exception e)
                    {
                     e.printStackTrace();
                    }
         }
    }

}
Esta entrada fue publicada en Ciencia y programación. Guarda el enlace permanente.

Una respuesta a Manejo de ficheros de texto y binarios en Java

  1. victor garay dijo:

    Saludos. estoy guardando pacientes en un archivo binario: numero de expediente, dni, apellidos, nombres, telefono, direccion y fotografia. cuando hago la busqueda a traves del numero del expediente, solo puedo buscar al ultimo paciente ingresado ya que a los anteriores no se encuentran en el archivo binario, al parecer el problema se presenta al guardar los datos se sobreescriben y no lo agregan. aqui les dejo los codigos de guardar y buscar respectivamente a ver si me ayudan. gracias.

    private void btcGuardarActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    Object nombreArchivo = archivo;
    System.out.println(nombreArchivo);
    try{
    ObjectOutputStream fileout = new ObjectOutputStream(new FileOutputStream((String) nombreArchivo));
    fileout.writeObject(txtNroExpediente.getText());
    fileout.writeObject(txtDni.getText());
    fileout.writeObject(txtApellidos.getText());
    fileout.writeObject(txtNombres.getText());
    fileout.writeObject(txtDireccion.getText());
    fileout.writeObject(txtTelefono.getText());
    fileout.writeObject(lblFoto.getIcon());
    fileout.flush();
    JOptionPane.showMessageDialog(null, “Los datos del paciente se guardaron corecttamente…”);
    if(fileout!=null){
    fileout.close();
    }
    }catch(IOException e){}
    desactivarTextFields();
    btcGuardar.setEnabled(false);
    btcNuevo.setEnabled(true);
    btcBuscar.setEnabled(false);
    }

    private void btcBuscarActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    Object nombreArchivo = archivo;
    try{
    try (ObjectInputStream filein = new ObjectInputStream(new FileInputStream((String) nombreArchivo))){
    Object expediente = filein.readObject();
    Object dni = filein.readObject();
    Object apellidos = filein.readObject();
    Object nombres = filein.readObject();
    Object direccion = filein.readObject();
    Object telefono = filein.readObject();
    Object foto = filein.readObject();
    if (txtNroExpediente.getText().equals(expediente)){
    txtNroExpediente.setText((String) expediente);
    txtDni.setText((String) dni);
    txtApellidos.setText((String) apellidos);
    txtNombres.setText((String) nombres);
    txtDireccion.setText((String) direccion);
    txtTelefono.setText((String) telefono);
    lblFoto.setIcon((Icon) foto);
    }
    if(filein!=null){
    filein.close();
    }
    } catch (ClassNotFoundException ex) {
    Logger.getLogger(JDPacientes.class.getName()).log(Level.SEVERE, null, ex);
    }
    }catch(IOException e){}
    }

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s