[java][PrintWriter] Pbm d'arrêt non commandé

Pbm d'arrêt non commandé [java][PrintWriter] - Java - Programmation

Marsh Posté le 01-03-2010 à 17:47:12    

Bonjour,  
 
Essayant de développer une appli pour la synchronisation des sous titres, je suis em...dé par la fonction PrintWriter qui, je ne sais pas pourquoi, s'arrête brusquement de fonctionner sans afficher un qqc message d'erreur.  
Plus précisément, mon appli fonctionne comme ça : dans une boucle While, je lis dans mon fichier de sous titre une ligne, si elle doit être modifiée je la modifie, puis je la réécris dans un fichier ".txt" que j'ai créé avant de rentrer dans ma boucle. Ma condition d'arrêt est qu'il n'y ai plus de ligne à lire.  
Ayant inséré un compteur, je vois bien que ma boucle tourne jusqu'à la condition d'arrêt demandée, mais ce PrintWriter de m..... s'arrête à environ 2% du fichier de départ, je ne vois pas du tout pourquoi !  
 
Voici le code : (c'est un peu du travail de bourin (je débute ))
 

Code :
  1. import java.io.*;
  2. public class Synchroniseur {
  3. public static void affiche(String avance_sec, String deformation, String cheminFichier, String nomFichier) throws IOException
  4. {
  5. String ligne;
  6. cheminFichier = cheminFichier.replace('\\','/');
  7.  
  8.  try
  9.  {
  10.   double sec_sync = Double.parseDouble(avance_sec);
  11.   double a=-Double.parseDouble(deformation);
  12.   BufferedReader ficTexte;
  13.   ficTexte = new BufferedReader(new FileReader(new File(cheminFichier+'/'+nomFichier)));
  14.     
  15.   File sortie = new File(cheminFichier+"/temp.srt" );
  16.   PrintWriter out  = new PrintWriter(new FileWriter(sortie));
  17.   if (ficTexte == null)
  18.   {
  19.    throw new FileNotFoundException("Fichier non trouvé: "+ nomFichier);
  20.   }
  21.   int k = 0;
  22.   String ancLigne_i="00000000000000000000000000000";
  23.   Plage anciNplage;
  24.   Plage nouvLplage = new Plage(ancLigne_i);
  25.   double nouvoSup_i = 0;
  26.   double nouvoInf_i = 0;
  27.   double ancienSup_i;
  28.   while ((ligne = ficTexte.readLine()) != null){
  29.    if (ligne != null)
  30.    {
  31.     boolean present = testCharTable.chainePresente(ligne,"-->" );
  32.     if (present)
  33.     {
  34.      if (k==0) {ancienSup_i = sec_sync;}
  35.      else
  36.      {
  37.       ancienSup_i = nouvLplage.plageSup;
  38.      }
  39.      anciNplage = new Plage(ancLigne_i);
  40.      double ancienSup = anciNplage.plageSup;
  41.      ancLigne_i = ligne;
  42.      nouvLplage = new Plage(ligne);
  43.      double nouvoInf = nouvLplage.plageInf;
  44.      double nouvoSup = nouvLplage.plageSup;
  45.      nouvoInf_i = ancienSup_i + (1-a)*(nouvoInf-ancienSup);
  46.      nouvoSup_i = nouvoInf_i + (1-a)*(nouvoSup-nouvoInf);
  47.      nouvLplage.plageInf = nouvoInf_i;
  48.      nouvLplage.plageSup = nouvoSup_i;
  49.      nouvLplage.Converti();
  50.      Merge(nouvLplage,ligne);
  51.      Printer(nouvLplage, ligne, out);
  52.      k++;
  53.     }
  54.     else
  55.     {
  56.      String str_i = new String(ligne.toCharArray());
  57.      InterfaceAuto.listeMod.addElement(str_i);
  58.      InterfaceAuto.listeModS.addElement(str_i);
  59.      try{
  60.            out.println(ligne);
  61.          }
  62.      catch(Exception e){
  63.            e.printStackTrace();
  64.          }
  65.     }
  66.    }//fin if  
  67.   }//fin while
  68.  }
  69.  catch (FileNotFoundException e) {
  70.  System.out.println(e.getMessage());
  71.  }
  72.  catch (IOException e) {
  73.  System.out.println(e.getMessage());
  74.  }
  75. }
  76. public static void Merge(Plage plage, String ligne) {
  77.  String str = "abcdefghijklmnopqrstuvwxyzéèà";
  78.  String str_i = ligne;
  79.  for(int i=0; i<29;i++)
  80.  {
  81.    if(i==2||i==5||i==8||i==12||i==13||i==14||i==15||i==16||i==19||i==22||i==25)
  82.    {
  83.   char tmp = str.charAt(i);
  84.   str = str.replace(tmp,ligne.charAt(i));
  85.    }
  86.        else
  87.        {
  88.         char c=' ';
  89.         if (plage.chiffre[i] >= 0 && plage.chiffre[i] <= 9)
  90.         {
  91.          c = Character.forDigit(plage.chiffre[i], 10);
  92.         }
  93.         char tmp = str.charAt(i);
  94.     str = str.replace(tmp,c);
  95.        }
  96.  }
  97.  InterfaceAuto.listeMod.addElement(str_i);
  98.  InterfaceAuto.listeModS.addElement(str);
  99. }
  100. public static void Printer(Plage plage, String ligne, PrintWriter out) {
  101.  try{
  102.        for(int i1=0; i1<29;i1++)
  103.        {
  104.         if(i1==2||i1==5||i1==8||i1==12||i1==13||i1==14||i1==15||i1==16||i1==19||i1==22||i1==25)
  105.         {
  106.         out.print(ligne.charAt(i1));
  107.         }
  108.         else out.print(plage.chiffre[i1]);
  109.        }
  110.        out.println();
  111.      }
  112.  catch(Exception e){
  113.        e.printStackTrace();
  114.      }
  115. }
  116. }

Reply

Marsh Posté le 01-03-2010 à 17:47:12   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed