Leer todos los archivos .txt en una carpeta línea por línea

En este momento estoy trabajando en un hilo que constantemente busca archivos .txt en una carpeta. Una vez que encuentra un archivo, se supone que debe leer el contenido, línea por línea, (usando un lector protegido y dividido (separador) para finalmente insertar estos datos en una base de datos).

La cosa es antes de que mi código buscara un archivo específico con un nombre específico, y funcionó perfectamente, pero luego mi profesor me dijo que el programa necesita buscar cualquier archivo .txt en la carpeta. Así que agregué un código para hacer esto e intenté que funcionara con mi código anterior.

Creo que lo que no funciona son las siguientes líneas:

  • FileReader fr = new FileReader(fileList[i]);
  • BufferedReader b = new BufferedReader(fr);

El error que obtengo es la excepción: archivo no encontrado, excepción e.

¡Bien, aquí está mi código! :RE

public void run() {

    while (true) {
        try {
            Thread.sleep(20000);

            boolean flag = false;

            try {

                FilenameFilter filter = new FilenameFilter() {
                    public boolean accept(File dir, String fileName) {
                        return fileName.endsWith("txt");
                    }
                };

                File f = new File("D:\\Mis Documentos\\");
                String[] fileList = f.list(filter);
                for (int i = 0; i < fileList.length; i++) {

                     System.out.println(fileList[i]);
                    FileReader fr = new FileReader(fileList[i]);
                    BufferedReader b = new BufferedReader(fr);
                    String cadena = b.readLine();
                    Validaciones v = new Validaciones();

                    if (cadena == null) {

                        JOptionPane.showMessageDialog(null, "El fichero está vacío");

                    } else {

                        while (cadena != null) {

                            String[] fields = cadena.split(SEPARATOR);

                            EntidadDAO ed = new EntidadDAODB();
                            Entidad ent = new Contacto();

                            if (fields.length == 7) {

                                // System.out.println("fields es 7");
                                for (int i2 = 0; i2 < fields.length; i2++) {

                                    nombre = fields[0];
                                    apellido = fields[1];
                                    alias = fields[2];
                                    direccion = fields[3];
                                    telefono = fields[4];
                                    nacimiento = fields[5];
                                    email = fields[6];

                                }

                                if (v.validarThread(nacimiento, email, telefono) == true) {

                                    System.out.println("El contacto " + nombre + " se validó correctamente");
                                } else {

                                    System.out.println("No se pudo cargar el contacto " + nombre + ". Error al validar los datos.");
                                    cadena = b.readLine();
                                    continue;

                                }

                            ((Contacto) ent).setNombre(nombre);
                            ((Contacto) ent).setApellido(apellido);
                            ((Contacto) ent).setAlias(alias);
                            ((Contacto) ent).setDireccion(direccion);
                            ((Contacto) ent).setTelefono(telefono);
                            ((Contacto) ent).setNacimiento(nacimiento);
                            ((Contacto) ent).setEmail(email);
                            ((Contacto) ent).setFavorito("no");
                            // System.out.println(ent.toString());
                            //  ed.agregarEntidad(ent);
                            cadena = b.readLine();

                            } else {

                                System.out.println("No se pudo cargar el contacto " + nombre + ". Faltan datos.");
                                cadena = b.readLine();
                            }

                        }
                    }
                    b.close();
                    //      moverFichero();
                } // aca termina el for que lee cada archivo txt.

            } catch (FileNotFoundException e) {

                System.out.println("No se encontró el fichero");

            } catch (Exception e) {

                System.out.println("Ocurrió un error al leer o cerrar el fichero" + e);

            }

        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
            System.out.println("Error al ejecutar thread");
        }
    }
}
Respuesta 1

Me gustaría presentar mi situación primero, estoy haciendo un kernel tweaker que pasa varios comandos de shell usando Runtime.getRuntime (). Exec (...), funciona bien, pero el problema es que su ...

Estoy trabajando en un proyecto de Maven que requiere un SystemPropertyVariable (maven-surefire-plugin) para establecer en la línea de comando (-Dinstance = $ instance) y pasar el valor en CAP como se muestra a continuación mvn test -...

He revisado el documento tutorial de egit aquí http://wiki.eclipse.org/EGit/User_Guide. Ahora tengo un repositorio git con un proyecto de eclipse en mi computadora portátil y puedo enviarlo a un repositorio git remoto en ...

Tengo un punto final de reposo como este: / users / {userId} / algo que implementé la autenticación usando oauth2. Mi WebSecurityConfig tiene este aspecto: configuración de vacío anulada (HttpSecurity http) arroja ...