Recherche dans un fichier
Bonjour tout le monde ,
J'ai besoin d'un petit coup de main sur ce bout de code :? , en effet j'utilise mon code pour generer des fichiers qui vont chercher dans un repertoire de fichiers.
par exemple sur l'un de mes fichiers(Logs) j'ai cette structure :
le hh:mm:ss est variant, le nombre de Start est variant entre les End mais pour chaque Start on a un End normalement. Le nombre de Start est supérieur au nombre de End
Citation:
Start .....hh:mm:ss
ldfjdfklfkjf
ididfhdsfhsu
Start ...hh:mm:ss
Start ...hh:mm:ss
Start ...hh:mm:ss
End ..hh:mm:ss
Start hh:mm:ss
kqldjhjkdh
End...hh:mm:ss
Ce qui m'interesse c'est de récuperer les lignes qui commence par Start et End. Mon code le fait très bien , sauf que j'ai une autre contrainte , je veux récuperer la ligne qui contient Start et juste après la ligne suivante qui contient End puis le Start suivant puis le End suivat et ainsi de suite ....hh:mm:ss End hh:mm:ss Start hh:mm:ss End hh:mm:ss
Voici le code que j'utilise :
Code:
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 62 63
|
public class resumeLog{
//attributs
private static PrintWriter fluxSortie;
private static HashMap<String,String> filesNamesPaths ;
private static File folder;
/*private static int rating;*/
/**
* @param args
* @throws FileNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException {
// TODO Auto-generated method stub
//récupérer la liste des path des fichiers textes dans une HashMap
folder = new File("input/traces");
File[] listOfFiles = folder.listFiles();
filesNamesPaths = new HashMap<String,String>();
for (File file : listOfFiles) {
if (file.isFile()) {
filesNamesPaths.put(file.getName(),file.getPath());
System.out.println(filesNamesPaths.put(file.getName(),file.getPath()));
}
}
//Parcourir la HashMap et effectuer les traitements
for(Entry<String, String> entry : filesNamesPaths.entrySet()) {
fluxSortie = new PrintWriter(new FileOutputStream("output/Traces/trace"+entry.getKey()));
File file = new File(entry.getValue());
Scanner scanner = new Scanner(file,"ISO-8859-1");
while (scanner.hasNextLine()) {
String currentLine = (String) scanner.nextLine();
if(currentLine.startsWith(" Start:") || currentLine.startsWith("Start:") || currentLine.startsWith(" End:") || currentLine.startsWith("End:")){
fluxSortie.print(filesNamesPaths.put(file.getName(),"")+" " +currentLine);
}
}
fluxSortie.close();
scanner.close();
}
System.out.println("Fin d'éxecution");
}
} |
Ce code va me donner ça Start .....hh:mm:ss Start ...hh:mm:ss Start ...hh:mm:ss Start ...hh:mm:ss End ..hh:mm:ss Start hh:mm:ss End...hh:mm:ss
alors que je cherche ça Start .....hh:mm:ss End ..hh:mm:ss Start hh:mm:ss End...hh:mm:ss
Est ce qu'il y a un moyen de faire ça sur mes fichiers texte ??
Merci pour vos retours.