现在,我正在一个不断寻找文件夹中的.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");
}
}
}
答案 0 :(得分:1)
问题是您仅传递了FileReader
的文件名
FileReader fr = new FileReader(fileList[i]);
提供该文件的完整路径
FileReader fr = new FileReader("D:\\Mis Documentos\\"+fileList[i]);