逐行读取文件夹中的所有.txt文件

时间:2018-12-15 02:54:04

标签: java multithreading csv bufferedreader filereader

现在,我正在一个不断寻找文件夹中的.txt文件的线程上。一旦找到文件,就应该逐行读取内容(使用缓冲的读取器并进行拆分(分隔符)以最终将这些数据插入数据库中。)

在我的代码正在寻找具有特定名称的特定文件之前,它已经可以正常工作,但是后来我的教授告诉我,该程序需要在文件夹中寻找任何.txt文件。因此,我添加了一些代码来执行此操作,并尝试使其与我的旧代码一起使用。

我认为以下行是无效的:

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

我遇到的错误是问题-未找到文件异常e。

好的,这是我的代码! :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 :(得分:1)

问题是您仅传递了FileReader的文件名

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

提供该文件的完整路径

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