Salut
Envoyé par
rosyfulla
J'ai modifié un peu ton code à cause des erreurs que j'ai eu ,
Quelles erreurs ? Tu dois être en Java 7 et pas en Java 8... d'ailleurs, je vois que tu as retiré le filtre qui permettait de ne prendre que les fichiers, surement à cause de l'expression lambda, qui ne peut être utilisée qu'en Java 8 :
Files.newDirectoryStream(folderInput, p-> !Files.isDirectory(p)) ) {
Pour faire fonctionner ça en Java 7 :
1 2 3 4 5 6
| Files.newDirectoryStream(folderInput, new DirectoryStream.Filter() {
public boolean accept(Path p) throws IOException {
return !Files.isDirectory(p);
}
}
) { |
Envoyé par
rosyfulla
j'ai une exception au niveau de la ligne en lançant , try( BufferedWriter writer = Files.newBufferedWriter(Paths.get(OUTPUT_FOLDER, OUTPUT_PREFIX + file.getFileName()),StandardCharsets.UTF_8, StandardOpenOption.WRITE))
Quelle exception ?
Envoyé par
rosyfulla
je n'ai pas bien compris comment fonctionnent les arguments de cette classe :
Paths.get( String, String...) : le premier argument c'est le début du path, et les suivants les parties suivantes. Ça fait comme une concaténation et ça retourne un Path (un équivalent de File, à sauve Java 7)
Files.newBufferedWriter( path, charset, ...openOptions...))" le premier c'est le Path du fichier qu'on veut ouvrir en écriture, le deuxième c'est le charset (dans ton code, tu as mis UTF-8) et à la suite il y a les options d'ouverture, facultatives.
En Java8, il y a une version sans le paramètre charset (utilise le charset par défaut)
Envoyé par
rosyfulla
Une autre question , en ce qui concerne la liste que tu as mis dans la boucle , je peux bien afficher que le premier Start avant de trouver le End c'est ça ?
Oui. Tu sais que c'est le premier start si starts est vide :
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
| if ( line.trim().startsWith("Start:") ) {
if ( starts.isEmpty() {
writer.write(" ");
writer.write(" ");
writer.write( line ); // écrire que le premier start, dès qu'il est trouvé
}
// chaque fois qu'on rencontre un start, on le mémorise
starts.add(line);
}
else if ( line.trim().startsWith("End:") ) {
// chaque fois qu'on rencontre un end, on affiche tous les couples start/end à partir des derniers mémorisés
if ( starts.size()>1 ) {
starts.remove(0); // on enlève le premier, sinon il va être écrit 2 fois
for(String start : starts) {
writer.write(" ");
writer.write(start);
writer.write(" ");
writer.write(line);
}
}
// on efface les derniers starts mémorisé
starts.clear();
} |
Evidemment, ici, ça ne change rien au résultat, puisqu'on écrire que des "start" et des "end"...
Partager