Foro de elhacker.net

Programación => Java => Mensaje iniciado por: andrex.125 en 5 Diciembre 2013, 20:41 pm



Título: ayuda con archivos en java
Publicado por: andrex.125 en 5 Diciembre 2013, 20:41 pm
Hola a todos, tengo un problema con un programa que estoy implementando en java (trabajo de la universidad) lo que tiene que hacer el programa es leer un archivo nombres.txt, después de leer el archivo tengo que buscar un nombre en ese archivo, Si el nombre esta se tiene que copiar a otro archivo llamado Copia.txt, Si el nombre no esta solo tiene que volver a pedirlo. Ya implemente todos lo metodos pero no se me copia el nombre en el archivo Copia.txt. Gracias

Archivos3.java
Código:
import java.io.*;
import java.util.*;
import javax.swing.*;

public class Archivos3 {
static Vector nombres = new Vector();
static BufferedReader entrada;
static FileWriter salida =null;
static String nombreCopiar = null;
 static String linea;
static File archivo = new File("src/archivos/nombres.txt");
 
    public static void main(String[] args) {
        leerArchivo(nombres);
        buscarNombre(nombres);
        copiaArchivo(nombres);

    }
     public static void copiaArchivo(Vector n){
       try {
 
            salida=new FileWriter("Copia.txt");
            if(buscarNombre(n)==1){
                salida.write(nombreCopiar);
               
            }
            else if (buscarNombre(n)==2){
                JOptionPane.showMessageDialog(null, "el nombre no se encuentra");
                buscarNombre(nombres);
            }
   
 }catch (IOException ex) {
 System.out.println(ex);
 }finally{
//cerrar los flujos de datos
 if(entrada!=null){
 try{
 entrada.close();
 }catch(IOException ex){}
 }
 if(salida!=null){
 try{
 salida.close();
 }catch(IOException ex){}
 }
 System.out.println("el bloque finally siempre se ejecuta");
 }
 
 try {
//espera la pulsación de una tecla y luego RETORNO
 System.in.read();
 }catch (Exception e) {
 }
 }

     
    //leo el archivo y lo meto en un Vector
    public static void leerArchivo(Vector n)  {
        try {
        entrada = new BufferedReader(new FileReader(archivo));
        while (entrada.ready()) {
        linea = entrada.readLine();
         n.add(linea);
         }
         }catch (IOException ex) {
    System.out.println(ex);
        } finally {
//cerrar los flujos de datos
            if (entrada != null) {
                try {
                    entrada.close();
                } catch (IOException ex) {
                }
            }
            System.out.println("el bloque finally siempre se ejecuta");
        }
    }
    //busco en el Vector si el nombre se encuentra
  public static int buscarNombre(Vector n){
        String x = JOptionPane.showInputDialog(null, "ingrese el nombre");
        int c = 0;
        try {
            int pos = n.indexOf(x);
            if (x.equals(n.elementAt(pos)) && (pos > -1)) {
                System.out.println(n.elementAt(pos));
                nombreCopiar = (String) n.elementAt(pos); //hago casting para pasar de objeto a String.
                c=1;
                 
            }
            else{
                nombreCopiar = null;
                 c=2;
            }
        } catch (Exception e) {
            System.out.println("nombre no esta");
           
        }
       
        return c;
       
}
    }


Título: Re: ayuda con archivos en java
Publicado por: Danyfirex en 5 Diciembre 2013, 21:35 pm
Hola no se java pero me parece que puedes hacer algo mas simple.

Código
  1.  String nombre = JOptionPane.showInputDialog(null, "ingrese el nombre");
  2.    File file = new File("File.txt");
  3.    FileInputStream fis = new FileInputStream(file);
  4.    byte[] data = new byte[(int)file.length()];
  5.    fis.read(data);
  6.    fis.close();
  7.  
  8.    //
  9.    String filestr = new String(data, "UTF-8");
  10.  
  11. if filetr.indexOf(nombre) {
  12.  
  13. PrintWriter writer = new PrintWriter("copia.txt", "UTF-8");
  14. writer.println("nombre);
  15. writer.close();
  16. }
  17.  


PD: el código no es funciona. solo es una idea.


saludos


Título: Re: ayuda con archivos en java
Publicado por: ThinkByYourself en 6 Diciembre 2013, 13:51 pm
A lo mejor este breve código te puede ayudar.
Código
  1. String s_origen = "/home/universitariosQueNoSabenBuscarEnGoogle/ficheroOrigen.txt", s_destino = "/home/universitariosQueNoSabenBuscarEnGoogle/ficheroDestino.txt";
  2. try {String linea="", contenido="", cosaquequierebuscar="a saber";
  3. FileWriter escritor;
  4. while((linea = new BufferedReader(new InputStreamReader(new FileInputStream(new File(s_origen)))).readLine() ) != null) {contenido += linea;}
  5. if(contenido.indexOf(cosaquequierebuscar) != -1) {(escritor = new FileWriter(new File(s_destino))).write(cosaquequierebuscar);escritor.close();}
  6. }catch(Exception ex) {System.out.println("Algo falló");}
  7. }
  8.  
No lo he probado, puede que no funcione del todo, o que no haga lo que quieres. En fin.
Un saludoooo


Título: Re: ayuda con archivos en java
Publicado por: lagg en 7 Diciembre 2013, 18:57 pm
Todavía estoy empezando asi que perdonar si digo alguna tonteria  :P
¿Porque al leer el fichero si entrada es distinto de null cierras el flujo? no seria if (entrada==null)?

if (entrada != null) {
                try {
                    entrada.close();
                } catch (IOException ex) {
                }
            }

Otra cosa como guardas los nombre en tu archivo nombres.txt?


Título: Re: ayuda con archivos en java
Publicado por: Leyer en 9 Diciembre 2013, 20:33 pm
@lagg

Esta haciendo la comprobación de que entrada!=null,por que si entrada es distinto de null quiere decir que el archivo se ha podido leer correctamente y no a habido problemas, y como ya se abrieron los flujos I/O se procede a cerrar el flujo.