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
| public class FichierVersFichier {
public static void main(String args[]){
BufferedReader br ;
BufferedWriter bw ;
String ligne;
int max_chars = 16;
File entree = new File("fichierEntree.txt");
File sortie = new File("fichierSortie.txt");
if(entree.exists())
{
try
{
br = new BufferedReader(new FileReader(entree));//preparation du fichier d'entrée - Sera variable plus tard -
bw = new BufferedWriter(new FileWriter(sortie));//preparation du fichier de sortie
while((ligne = br.readLine())!= null)
{
if(ligne.length() < max_chars) //si ligne < max chars, on l'ecrit puis on saute une ligne
{
bw.write(ligne + "\n");
}
else //sinon on transforme la ligne en tableau de mots
{
String temp[] = ligne.split(" "); //on stock les mots dans le tableau TEMP[]
int i = 0;
int sumChars = 0; //somme temporaire des caractères sur la ligne en cours d'écriture au moins égale au nombre de caractère du premier mot
if(temp[1].length() > max_chars) //CAS PARTICULIER : si le premier mot du tableau est superieur a max chars, on a pas le choix, on l'ecrit
{
bw.write(temp[1] + "\n");
}
else //sinon, on boucle tant que tout les mots de la ligne n'ont pas été placés
{
while(i!=temp.length)
{
sumChars = sumChars + temp[i].length() + 1; //la somme des caractères de la ligne en train d'etre ecrite
// le + 1 correspond a l'espace ... il compte pour un caractère !
if(sumChars < max_chars) //si la longueur max chars n'est pas atteinte
{
bw.write(temp[i] + " ");
}
else //si le mot (qui est forcement le deuxieme au moins, fait depasser la ligne de max chars, alors on saute la ligne directement puis on l'ecritdans une nouvelle ligne
{
bw.write("\n" + temp[i] + " ");
sumChars = temp[i].length() + 1; //on réinitialise le compteur de caractère de la ligne
}
i++; //j'incremente pour pouvoir changer de case du tableau split
}
bw.write("\n");
}
}
}
bw.flush();
bw.close();
br.close();
System.out.println("Opération terminée avec succès");
}
catch(IOException e)
{
System.err.println("Le fichier n'existe pas... Changez de source");
}
}
}
} |