Concaténation de ligne-->résultat different sous linux et windows
Bonjour à tous,me revoila :yaisse2::yaisse2::aie:
j ai une application en JAVA qui doit ecrire une ligne dans un fichier à partir de deux lignes de deux fichiers différents,en gros j ai:
zae rt 345 536546 EZRR (du fichier 1)
cvb uy 879 54657 QSD (du fichier 2)
Et le résultat attendu c'est
zae rt 345 536546 EZRR cvb uy 879 54657 QSD (dans un fichier 3 nouvellement créé).
Sous linux ça a marché sans problème,mais quand j ai demarré mon application sous windows il y avait un espece ENORME entre la premiere et la deuxieme ligne!!!J ai beau eu cherché dans le code,je n'ai rien trouvé!!
Quelqu'un a t il une idée?
Voici mon code au cas où:
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 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
| FileReader fr1 = new FileReader( nom_fichier2 );
BufferedReader br1 = new BufferedReader( fr1 );
String ligne1 = null;
//ouverture du deuxieme fichier
//je cree le dernier fichier qui contiendra tout
File fichier_final=new File(nom_fichier3);
if(!fichier_final.createNewFile())
System.out.println("Problème de créaation de fichier");
PrintWriter ecrivain;
while( ( ligne1 = br1.readLine() ) != null )
{
String tab_1 = ligne1;
//affectation de chaque ligne du fichier dans un tableau char pour pouvoir traiter l'information
char tab1[]=new char[tab_1.length()];
for (int i=0; i<tab_1.length();i++)
{
tab1[i]=tab_1.charAt(i);
}
//je stocke ici le numéro de vol
char num_vol[]=new char[3];
num_vol[0]=tab1[18];
num_vol[1]=tab1[19];
num_vol[2]=tab1[20];
//System.out.println(num_vol);
String vol=new String(num_vol);
FileReader fr2 = new FileReader( nom_fichier1 );
BufferedReader br2 = new BufferedReader( fr2 );
String ligne2 = null;
while( ( ligne2 = br2.readLine() ) != null && trouve==false)
{
if(ligne2.startsWith(vol))
{
trouve=true;
ligne2=ligne2.substring(3,ligne2.length());
ligne2=ligne2.trim();//j'elimine les espaces
ligne1=ligne1+ligne2; //7 espaces pr le nombre dheures
//je dois écrire cette ligne dans le dernier fichier
/* char ligne11[]=new char[ligne1.length()];
for (int i=0; i<ligne1.length();i++)
{
ligne11[i]=ligne1.charAt(i);
}*/
if(premierefois==true)//si c est la premiere fois que l'on écrit il faudra mettre au début du fichier CIE AV MV...
{
premierefois=false;
//traitement pour pouvoir écrire directement CIE MV... dans le fichier
char caract[]=new char[caractere.length()];
for (int i=0; i<caractere.length();i++)
{
caract[i]=caractere.charAt(i);
}
ecrivain=new PrintWriter(new BufferedWriter (new FileWriter(nom_fichier3,true)));
ecrivain.println(caract);
ecrivain.println(ligne1);
ecrivain.close();
JOptionPane.showMessageDialog(null,
"Convertion et création du fichier avec succès(NOM_traité.txt) !", "convertion",
JOptionPane.INFORMATION_MESSAGE);
}
else
{
ecrivain=new PrintWriter(new BufferedWriter (new FileWriter(nom_fichier3,true)));
ecrivain.println(ligne1); //on écrit le tableau qui contient les données traitées dans chaque ligne du fichier
ecrivain.close();
}
}
}//fin du while qui parcout le deuxieme fichier
//je remet le booleen a false
trouve=false;
br2.close();
}//fin du while qui parcourt le premier fichier
br1.close();
//j efface ici le premier fichier crée qui ne nous ai plus d aucune utilité
File f = new File ( nom_fichier2 ) ;
boolean success = f. delete () ;
if(!success)
JOptionPane.showMessageDialog(null,
"Impossible d'effacer le fichier portant l'extension _traité", "convertion",
JOptionPane.INFORMATION_MESSAGE);
}catch( IOException e )
{
JOptionPane.showMessageDialog(null,
"Problème inconnue lors de la lecture du fichier", "convertion",
JOptionPane.ERROR_MESSAGE);
e.getMessage();
}finally{
System.out.println("Application terminée correctement");
}
}
finally{
System.out.println("Opération terminée avec succès!");
}
}
} |
Je precise que sous linux ca marche(mais malheuresment pour moi les utilisateurs de cette application ne fonctionnent que sous windows)