IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Concaténation de ligne-->résultat different sous linux et windows


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 35
    Points : 18
    Points
    18
    Par défaut Concaténation de ligne-->résultat different sous linux et windows
    Bonjour à tous,me revoila
    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 : 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
    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)

  2. #2
    Membre régulier
    Inscrit en
    Juillet 2002
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 168
    Points : 110
    Points
    110
    Par défaut
    voilà :

    tu veux concaténé deux fichiers dans un seul.

    l'algo est triviale , tu parcoure le premier fichier et chaque ligne tu l'écris dans le fichier concaténé et c'est pareil pour le second fichier.

    une nouveauté de java 5 c'est la classe scanner, utilisation facile , lecture ligne par ligne :

    http://java.developpez.com/faq/java/...eLigneParLigne

    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
     
    String fileOut1 = "fichier1";
    String fileOut2 = "fichier2";
    Scanner scannerOut1 = new Scanner(new File(fileOut1));
    Scanner scannerOut1 = new Scanner(new File(fileOut2));
    String lFileConcat = "fichierConcat";
    BufferedWriter writer = new BufferedWriter(new PrintWriter(new FileOutputStream(lFileConcat)));
     
    // On boucle sur chaque ligne detecté dans le premier fichier
    while (scannerOut1.hasNextLine()) {
        writer.append(scannerOut1.nextLine());
        writer.flush();
    }
    scannerOut1.close();
     
    // On boucle sur chaque ligne detecté dans le second fichier
    while (scannerOut2.hasNextLine()) {
        writer.append(scannerOut2.nextLine());
        writer.flush();
    }
     
    scannerOut2.close();
     
    writer.close();

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Points : 459
    Points
    459
    Par défaut
    Bonjour,

    Pourquoi ne pas faire comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
             String l1 = "zae rt 345 536546 EZRR"; //(du fichier 1)
             String l2 = "cvb uy 879 54657 QSD"; //(du fichier 2)
             String l3 = "";
             l3 = l1;
             l3 = l3.concat(" ");
             l3 = l3.concat(l2); 
             System.out.println("l3 : " + l3);
    Cordialement.

    Dan

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Script Pyhon et ligne de commande(terminal) sous Linux
    Par Jackbalek dans le forum Général Python
    Réponses: 13
    Dernier message: 11/06/2014, 18h18
  2. Réponses: 4
    Dernier message: 22/08/2008, 13h46
  3. Réponses: 5
    Dernier message: 02/11/2007, 14h04
  4. Ethernet sous Linux et Windows
    Par Invité4 dans le forum Réseau
    Réponses: 9
    Dernier message: 17/04/2005, 11h19
  5. Etat de la pile sous Linux et Windows
    Par Bibouda dans le forum x86 32-bits / 64-bits
    Réponses: 7
    Dernier message: 16/02/2003, 01h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo