Bonjour,
Alors voila j'ai un petit soucis/interrogation.
Je veux partir de 3 fichiers et les fusionner en un seul, et j'ai réussi mais il se passe un comportement etrange, alors plutot que de le contourner "a la main", je voudrais comprendre le pourquoi...
voici le code :
et la méthode copy :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 //existence du fichier dictionnaire java.io.File dico = new java.io.File("dictionnaryTest.txt"); if (dico.exists()== false){ myOutputDico = new FileOutputStream("dictionnaryTest.txt"); //cas ou le fichier dico n'existe pas, on le copie myInputDico1 = new FileInputStream(NAME_DICO); myInputDico2 = new FileInputStream(NAME_DICO2); myInputDico3 = new FileInputStream(NAME_DICO3); copy(myInputDico1,myInputDico2,myInputDico3,myOutputDico); }
Donc le soucis c'est que la 1ere ligne (en l'occurence le 1er mot vu que c'est un mot par ligne) des 2 sous fichiers dico2 et dico3 sont ignorés, en debug, "len" prend bien la bonne valeur du nombre a écrire mais il n'ecrit simplement pas le debut dans le fichier en output... donc j'ai trouvé comme solution simplement de sauter la 1ere ligne des 2eme et 3eme fichiers, et la impec ça a bien tout fusionner, mais je comprends pas pourquoi il rate ainsi des données ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 private static void copy(InputStream inputStream1, InputStream inputStream2, InputStream inputStream3, FileOutputStream outputFile) { BufferedOutputStream bufOut = new BufferedOutputStream(outputFile, 8192); BufferedInputStream bufIn1 = new BufferedInputStream(inputStream1, 8192); BufferedInputStream bufIn2 = new BufferedInputStream(inputStream2, 8192); BufferedInputStream bufIn3 = new BufferedInputStream(inputStream3, 8192); byte buf[] = new byte[8192]; int len; try { while ((len = bufIn1.read(buf)) != -1) { bufOut.write(buf, 0, len); } while ((len = bufIn2.read(buf)) != -1) { bufOut.write(buf, 0, len); } while ((len = bufIn3.read(buf)) != -1) { bufOut.write(buf, 0, len); } bufOut.flush(); bufOut.close(); bufIn1.close(); bufIn2.close(); bufIn3.close(); } catch (IOException e) { } }
Merci
Partager