Comparar ficheros linea por linea contra linea por linea de otro fichero
Publicado por David Guzmán (3 intervenciones) el 21/12/2015 22:36:18
Hola, espero me puedan ayudar. Intentaré explicar lo mejor posible lo que quiero hacer.
Bueno, lo que pasa es que tengo una carpeta con varios archivos .txt y cada uno tiene varias lineas y por otro lado una lista con cadenas de 10 caracteres. Quiero comparar un campo específico de cada linea de cada archivo en la carpeta, con la lista y en caso de que haya una coincidencia, que se imprima la linea del archivo de la carpeta en la que se está. El problema es que cuando corro el programa, solo toma la primer linea de los archivos de la carpeta y se sigue al siguiente archivo, a mi me gustaría que leyera todo el archivo, no solo la primer linea, espero me puedan ayudar.
Gracias
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package ceco;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Scanner;
import java.util.StringTokenizer;
/**
* /**
*
* @author agarciaa
*/
public class Ceco {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException {
String sDirectorio = "/Users/agarciaa/Desktop/carpeta";//ruta de la carpeta
File r = new File(sDirectorio);
File[] ficheros = r.listFiles();
File pvf = new File ("/Users/agarciaa/Downloads/archivo2.txt"); //ruta del archivo
BufferedReader qr = null;
FileReader rr = null;
BufferedReader dd = null;
FileReader cc = null;
BufferedReader ss = null;
File f = null;
for (int x = 1; x < ficheros.length; x++) { //se hace el recorrido del directorio archivo por archivo
String str = (ficheros[x].getPath());
try {
f = new File(str);
rr = new FileReader(f);
dd = new BufferedReader(rr);
cc = new FileReader(pvf);
ss = new BufferedReader(cc);
String linea, linea2;
String[] numc;
int i=0;
while ((linea = dd.readLine()) != null) { //HACEMOS LA LECTURA DEL PRIMER ARCHIVO LINEA POR LINEA
numc = linea.split("\t"); //ESTE ES EL CAMPO DE LA LINEA A COMPARAR
while((linea2 = dd.readLine()) != null){ //Aquí hacemos la lectura del segundo archivo linea por linea
if(numc[18].equals(linea2)) //SE HACE LA COMPARACIÓN DEL CAMPO CON LA LINEA
System.out.println(linea);
}
}
} catch (Exception e) {
} finally {
}
}
}
}
Bueno, lo que pasa es que tengo una carpeta con varios archivos .txt y cada uno tiene varias lineas y por otro lado una lista con cadenas de 10 caracteres. Quiero comparar un campo específico de cada linea de cada archivo en la carpeta, con la lista y en caso de que haya una coincidencia, que se imprima la linea del archivo de la carpeta en la que se está. El problema es que cuando corro el programa, solo toma la primer linea de los archivos de la carpeta y se sigue al siguiente archivo, a mi me gustaría que leyera todo el archivo, no solo la primer linea, espero me puedan ayudar.
Gracias
Valora esta pregunta


0