Insérer espaces

cs_bossou Messages postés 71 Date d'inscription vendredi 2 juin 2006 Statut Membre Dernière intervention 7 octobre 2011 - 1 juin 2009 à 17:24
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 2 juin 2009 à 18:23
Bonjour.
j'ai un fichier texte dans lequel je voudrais insérer des espaces à la fin de chaque ligne jusqu'à atteindre 119 caractères par ligne.j'ai essayé de faire ceci:
int

nbCaract= 119;String space=" ";   (l'élément à insérer)

//int arithm=new_test.length()+( nbCaract - new_test.length() );
for (int i =0; i<d.length-2;i++)
{
         new_test= d[i];   
                    if( new_test.length()< nbCaract )
                     {
                     fichier.write(new_test);
                     //fichier.write(space * arithm);
                    System.out.println(new_test);
                    System.out.println("longueur:"+new_test.length());
                   fichier.write("\n");
                    }

}

mais ça ne marche pas. aidez moi svp

9 réponses

kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 9
1 juin 2009 à 17:38
Salut,

que veux tu dire par 'ça ne marche pas' ?
c'est quoi le tableau 'd' ?
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
1 juin 2009 à 17:41
Salut,

Il te suffit d'ajouter autant d'espace que nécessaire à chaque ligne pour que la longueur de la ligne fasse 119 caractères (bien entendu, il faut utiliser un StringBuffer pour optimiser les performances !) :

final int NOMBRE_CARACTERES = 119;
final String CARACTERE_FIN = " ";

for (int i=0; i<d.length-2;i++) {
new_test= d[i];
int longueur = new_test.length();
if (longueur > NOMBRE_CARACTERES) {
longueur = NOMBRE_CARACTERES - longueur;
} else {
longueur = 0;
}
for (int j = 0; j < longueur; j++) {
d[i] += CARACTERE_FIN;
}
}
0
cs_bossou Messages postés 71 Date d'inscription vendredi 2 juin 2006 Statut Membre Dernière intervention 7 octobre 2011 1
2 juin 2009 à 14:10
merci pour la réponse. j'ai essayé ta solution mais ça ne marche pas je te post là tout le code afin que tu ais une idée de tout le code.

public static void main(String[] args) throws IOException{
  
  String fich="C:/fichierTexte.txt2";
  File f = new File(fich);
  
  // chargement du fichier dans le bufferedReader
  BufferedReader b = new BufferedReader(new FileReader(f.toString()));
  String c, line ="";
  
  //tant qu'on n'est pas à la fin du fichier
  while((c = b.readLine()) != null)
  {
   //on ajoute les lignes
   line += c+"\n";  
  }
  
  //à la fin de chaque ligne on passe à la ligne suivante
  String d[] = line.split("\n");
  String new_test ="";
  
  FileWriter fichier= new FileWriter(fich);
  
  for (int i=0; i<d.length-2;i++)
  {
   final int NOMBRE_CARACTERES = 119;
   final String CARACTERE_FIN = " ";
   new_test= d[i];
   int longueur = new_test.length();
     if (longueur > NOMBRE_CARACTERES) {
       longueur = NOMBRE_CARACTERES - longueur;
     } else {
       longueur = 0;
     }
     for (int j = 0; j < longueur; j++) {
       d[i] += CARACTERE_FIN;
     }
   fichier.write(new_test);
   fichier.write("\n");
  } 
  new_test=d[d.length-2];
  fichier.write(new_test);
  System.out.println("done");
  fichier.close();
 }
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 9
2 juin 2009 à 14:32
Normal.

tu modifies le contenu de ton tableau mais tu écris la variable new_test dans le fichier mais vu que tu fais de la concaténation de chaines, d[i] et new_test ne pointent pas sur la même valeur.
Tu écris donc ce que tu as lu. Remplace fichier.write(new_test) par fichier.write(d[i]).

De plus change le sens de la condition sur la longueur :
if (longueur < NOMBRE_CARACTERES)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bossou Messages postés 71 Date d'inscription vendredi 2 juin 2006 Statut Membre Dernière intervention 7 octobre 2011 1
2 juin 2009 à 15:06
merci ça marche pour toutes les lignes sauf pour la  dernière ligne. mais je vais chercher pour que ça marche pour toutes les lignes. merci beaucoup
0
cs_bossou Messages postés 71 Date d'inscription vendredi 2 juin 2006 Statut Membre Dernière intervention 7 octobre 2011 1
2 juin 2009 à 16:39
je m'excuse de dérranger encore une fois pour mon problème. le programme marche bien mais il ne prend pas en compte la dernière ligne du fichier. il ne justifie pas la dernière ligne comme les autres à 119 caractères:

  String fich="C:/fichierText.txt2";
  File f = new File(fich);
  
  // chargement du fichier dans le bufferedReader
  BufferedReader b = new BufferedReader(new FileReader(f.toString()));
  String c, line ="";
  
  //tant qu'on n'est pas à la fin du fichier
  while((c = b.readLine()) != null)
  {
   //on ajoute les lignes
   line += c+"\n";   
  }
  
  //à la fin de chaque ligne on passe à la ligne suivante
  String d[] = line.split("\n");
  String new_test ="";
  FileWriter fichier= new FileWriter(fich);
  
  for (int i=0; i<d.length-2;i++)
  {
   final int NOMBRE_CARACTERES = 119;
   final String CARACTERE_FIN =" ";
   new_test= d[i];
   int longueur = new_test.length();
     if (longueur < NOMBRE_CARACTERES)
     {
       longueur = NOMBRE_CARACTERES - longueur;
     }
     else
     {
       longueur = 0;
     }
     for (int j = 0; j < longueur; j++)
     {
       d[i] += CARACTERE_FIN;
     }
   
   fichier.write(d[i]);
   fichier.write("\n");
  }
  
  new_test=d[d.length-2];
  
  fichier.write(new_test);
  System.out.println("done");
  fichier.close();
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 9
2 juin 2009 à 17:31
tu n'écris pas toutes les lignes car tu t'arrêtes à l'avant dernière (d[d.length-2]). Ensuite cette ligne ne passe pas dans la boucle.
Pourquoi ta condition de sortie de boucle est i<d.length-2 et non i<d.length ?
0
cs_bossou Messages postés 71 Date d'inscription vendredi 2 juin 2006 Statut Membre Dernière intervention 7 octobre 2011 1
2 juin 2009 à 17:53
je fais i<d.length-2 pour supprimer les deux dernières lignes. Le but de mon programme est en fait de supprimer la dernière ligne de mon fichier et de justifier toutes les lignes à 119 caractères. là je supprime bien la ligne que je veux maislorsqu'il justifie toutes les lignes du fichier à 119 caractères il ne prend pas en compte la dernière ligne.
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
2 juin 2009 à 18:23
Ben à ce moment là pourquoi length-2, arrête toi à length-1...
0