Читать все .txt файлы в папке построчно - PullRequest
0 голосов
/ 15 декабря 2018

Сейчас я работаю над темой, которая постоянно ищет .txt файлы в папке.Как только он находит файл, он должен читать содержимое построчно (используя буферизованный ридер и split (разделитель), чтобы окончательно вставить эти данные в базу данных).

Дело до того, как мой код искалдля определенного файла с определенным именем, и он работал отлично, но потом мой профессор сказал мне, что программе нужно искать любой файл .txt в папке.Поэтому я добавил для этого некоторый код и попытался заставить его работать со своим старым кодом.

Я думаю, что не работают следующие строки:

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

Ошибка, которую я получаю, заключается в ловушке - исключение файла не найдено е.

Хорошо, вот мой код!: D

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");
        }
    }
}

1 Ответ

0 голосов
/ 15 декабря 2018

Проблема в том, что вы передаете только имя файла для FileReader

FileReader fr = new FileReader(fileList[i]);

Укажите полный путь к этому файлу

FileReader fr = new FileReader("D:\\Mis Documentos\\"+fileList[i]);
...