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

Entrée/Sortie Java Discussion :

lire et modifier un fichier texte


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 171
    Par défaut lire et modifier un fichier texte
    Bonjour,

    je sollicite votre aide. j'ai cette structure de fichier (juste un petit bout). Je peux donc dans mon cas avoir un nombre tres grand de tableau de quatre colonnes, séparés par des tab et/ou espace, avec le premier tableau précédé par le mot clé KEYWORD1. chaque tableau se termine par un "/"

    Donc pour chaque mot clé j'ai un certain nombre de tableau de quatre colonnes, avec chaque tableau se terminant par un "/" (ce qui indique le passage à un autre tableau).

    En effet, je souhaite donc modifier la quatrieme colonne de chaque tableau si la condition "cond1" n'est pas satisfaite...

    Merci d'avance pour votre aide...

    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
    
    KEYWORD1 
    -- Table 1 <=> 11 Homogenios Lithotype 10 
    -- Sw Krw Kro Pc 
     0.10354 0 1 -3 
     0.10364 1* 1* -3.0001 
     0.14053 1* 1* -3.0539 
     0.17752 1* 1* -3.1106 
     0.21452 1* 1* -3.1706 
     0.25151 1* 1* -3.2343 
     0.28851 1* 1* -3.3021 
     0.3255 1* 1* -3.3745 
     0.36249 1* 1* -3.4523 
     0.39948 1* 1* -3.5364 
     0.43648 1* 1* -3.6277 
     0.47347 1* 1* -3.7278 
     0.51046 1* 1* -3.8384 
     0.54746 1* 1* -3.9621 
     0.58445 1* 1* -4.1023 
     0.62144 1* 1* -4.2642 
     0.65843 1* 1* -4.4556 
     0.69543 0.1601 0.008 -4.6899 
     0.73242 0.2061 0.0034 -4.992 
     0.76941 0.2616 0.001 -5.4177 
     0.80641 0.3276 0.0001 -6.1455 
     0.8434 0.4057 0 -14.7722 
     1 1 0 -1000 
    / 
    -- Table 2 <=> 12 Homogenios Lithotype 10 
    -- Sw Krw Kro Pc 
     0.20283 0 0.8113 -3 
     0.20293 1* 1* -3.0002 
     0.23337 1* 1* -3.0539 
     0.26391 1* 1* -3.1106 
     0.29445 1* 1* -3.1706 
     0.32499 1* 1* -3.2343 
     0.35553 1* 1* -3.3021 
     0.38607 1* 1* -3.3745 
     0.41661 1* 1* -3.4523 
     0.44715 1* 1* -3.5364 
     0.47769 1* 1* -3.6277 
     0.50823 1* 1* -3.7278 
     0.53877 1* 1* -3.8384 
     0.5693 1* 1* -3.9621 
     0.59984 1* 1* -4.1023 
     0.63038 1* 1* -4.2642 
     0.66092 1* 1* -4.4556 
     0.69146 0.0893 0.0076 -4.6899 
     0.722 0.1122 0.0034 -4.992 
     0.75254 0.1392 0.0011 -5.4177 
     0.78308 0.1707 0.0002 -6.1455 
     0.81362 0.2071 0 -14.5709 
     1 1 0 -1000 
    /

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 46
    Par défaut
    Tu pourrais être plus précis sur le point qui te pose problème?

  3. #3
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    bah ça doit pas être si compliqué non?


    En pseudo-code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    tant que <fin de fichier pas atteinte>
      lire une ligne
      si la ligne est "KEYWORD1", positionner un flag indiquant qu on itère dans un tableau
      sinon si la ligne est "/" réinitialiser le flag
      sinon si le flag est positionné et que la ligne ne commence pas par "--"
        splitter la ligne trimée aux symboles espace ou tab (regexp "\\s")
        si le résultat fait 4 colonne, prendre la 4ème et modifier selon les besoins
        sinon lever une exception
        fin si
      fin si
    fin tant que

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 171
    Par défaut
    merci bien Pill_S,

    Je vais essayer maintenant de trouver les bons keyword pour que j'exprime ca en Java.

    sachant que le fichier que je souhaite modifier s'appelle "f".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    copyfile(OpenFile.getSelectedFile().getAbsolutePath(), f.getAbsolutePath());
    avec la méthode copyfile j'ai copié le contenu du fichier selectionné dans "f" que je veux modifier...

    Je laisse cette fiche ouverte au cas où je reste bloqué par bien exprimé tout ca en Java....

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 171
    Par défaut
    Pill_S, j'aimerai solliciter ton aide pour appliquer ton algo le meme temps que je cherche de mon coté aussi...

    Merci!!!!

  6. #6
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    t'en fais pas va, si jamais je devais l'implémenter ça me prendrait pas plus de 10 minutes...

    par contre je vais te laisser mariner un moment avant de te filer la solution

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 171
    Par défaut
    looool je n'ai pas de doutes!!!!

    ok je vais essayer... je suis en train de regarder sur internet des scripts deja fait a ce sujet

    les inputStream and companie.....

    A+

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 171
    Par défaut methode split(); comment désigner l'espace et tab à la fois?
    String ligne = " 1 2 3 4 "

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ligne.trim().split("\t"); // si l'espace entre les valeurs de la ligne est tab
    ligne.trim().split(" "); // si l'espace entre les valeurs de la ligne est Espace

    pour espace et tab à la fois c'est quoi?


    Merci d'avance,

  9. #9
    Membre très actif Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Par défaut
    Bonjour,

    c'est: [ \t]
    ou plus généralement pour designer un caractère blanc: \s
    (et oui split prend une regex en argument )

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 171
    Par défaut besoin d'un expert svp
    je recapitule car je suis bloqué:

    mon code:

    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
             String ligne;
             String new_line;
             boolean swofMode = false;
             boolean sgofMode = false;
             
             try    {
                BufferedReader lecteurAvecBuffer = new BufferedReader(new FileReader(f));
                   
                while ((ligne = lecteurAvecBuffer.readLine()) != null) {
                    //je suis en train de lire le fichier ligne par ligne
                    System.out.println(ligne);
                       
                    if (ligne.trim().equals("SWOF")) {
                        
                        swofMode = true;
                        sgofMode= false;
                        System.out.println("je suis mode SWOF");
                    }
                    else if (ligne.trim().equals("SGOF")) {
                       
                        sgofMode = true;
                        swofMode = false;
                        System.out.println("je suis mode SGOF");
                    }
                    else if (ligne.substring(0, 2).equals("--") || ligne.equals("/") || (ligne.trim().contains("==")) || ligne.trim().equals("SWOF") || ligne.trim().equals("SGOF") || ligne.trim().isEmpty() ) {
                        System.out.println("commentaire, fin de table, ou ligne vide, SWOF, SGOF => je l'ignore ");
                        
                    }
                    else { //vrai ligne avec des valeurs
                       
                        String[] splitted = ligne.trim().split(" "); // tab ou space
    
                        if (splitted.length != 4) {
                            
                          throw new RuntimeException("Erreur: la ligne '"+ligne+"' ne contient pas 4 fragments");
    
                        } else {
                            
                            if (swofMode) {
                                
                                splitted[3] = "nouvel valeur SWOF";
                                
                            } else if (sgofMode) {
                                
                                splitted[3] = "nouvel valeur SGOF";
                                
                            }
                            new_line = splitted[0] + "\t" + splitted[1] + "\t" + splitted[2] + "\t" + splitted[3];
                            
    
                        }
                        System.out.println("et ma ligne devient :  " + new_line);
    
                        ligne.replace(ligne, new_line);
                       // replace ne remplace pas dans mon fichier la 4eme valeur par "nouvel valeur SWOF" ou "nouvel valeur SGOF"
                                 
                    }
                }
        
    
             }
    
    
            catch(Exception ex)  {
         
                System.out.println("Erreur : je sors !");
    
                Logger.getLogger(KrPcImporterView.class.getName()).log(Level.SEVERE, null, ex);
            }



    please help!

    j'ai mis la tete du fichier de depar et celui d'arrivé que je suis sensé obtenir....

    PS: je n'arrive plus à envoyé des PJ mais en gros fichier de depart:

    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
    -- ========================W/O KRPCS================================
    -- ./includenew/newswof_216_0pcf_08nw.inc + ./includenew//newsgof_216.inc 
     
    SWOF 
    -- Table 1 <=> 11 Homogenios Lithotype 10 
    -- Sw Krw Kro Pc 
     0.10354 0 1 -3 
     0.10364 1* 1* -3.0001 
     0.14053 1* 1* -3.0539 
     0.17752 1* 1* -3.1106 
     0.21452 1* 1* -3.1706 
    / 
     
    -- Table 2 <=> 12 Homogenios Lithotype 10 
    -- Sw Krw Kro Pc 
     0.20283 0 0.8113 -3 
     0.20293 1* 1* -3.0002 
     0.23337 1* 1* -3.0539 
     0.26391 1* 1* -3.1106 
     0.29445 1* 1* -3.1706 
     0.32499 1* 1* -3.2343 
     0.35553 1* 1* -3.3021 
     0.38607 1* 1* -3.3745
    /
     
     
    --=======================KRPC G/O=======================================
     
    SGOF    
    -- Table  1 <=> 11  Homogenios Lithotype 10    
    -- Sg  Krg  Krog  Pcog
    0.00000 0.00000 1.00000 0.00000
    0.05603 0.00010 0.80000 0.00000
    0.11206 0.00180 0.60970 0.00000
    0.16809 0.00780 0.43690 0.00000
    /
     
    -- Table  2 <=> 12  Homogenios Lithotype 10    
    -- Sg  Krg  Krog  Pcog
    0.00000 0.00000 0.81130 0.00000
    0.04982 0.00008 0.64904 0.00000
    0.09965 0.00146 0.49465 0.00000
    0.14947 0.00633 0.35446 0.00000
    0.19929 0.01671 0.24850 0.00000
    0.24912 0.03489 0.17005 0.00000
    /

    fichier converti:

    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
    -- ========================W/O KRPCS================================
    -- ./includenew/newswof_216_0pcf_08nw.inc + ./includenew//newsgof_216.inc 
     
    SWOF 
    -- Table 1 <=> 11 Homogenios Lithotype 10 
    -- Sw Krw Kro Pc 
     0.10354 0 1 nouvel valeur SWOF
     0.10364 1* 1* nouvel valeur SWOF
     0.14053 1* 1* nouvel valeur SWOF
     0.17752 1* 1* nouvel valeur SWOF
     0.21452 1* 1* nouvel valeur SWOF
    / 
     
    -- Table 2 <=> 12 Homogenios Lithotype 10 
    -- Sw Krw Kro Pc 
     0.20283 0 0.8113 nouvel valeur SWOF
     0.20293 1* 1* nouvel valeur SWOF
     0.23337 1* 1* nouvel valeur SWOF
     0.26391 1* 1* nouvel valeur SWOF
     0.29445 1* 1* nouvel valeur SWOF
     0.32499 1* 1* nouvel valeur SWOF
     0.35553 1* 1* nouvel valeur SWOF
     0.38607 1* 1* nouvel valeur SWOF
    /
     
    --=======================KRPC G/O=======================================
     
    SGOF    
    -- Table  1 <=> 11  Homogenios Lithotype 10    
    -- Sg  Krg  Krog  Pcog
    0.00000 0.00000 1.00000 nouvel valeur SGOF
    0.05603 0.00010 0.80000 nouvel valeur SGOF
    0.11206 0.00180 0.60970 nouvel valeur SGOF
    0.16809 0.00780 0.43690 nouvel valeur SGOF
    /    
     
    -- Table  2 <=> 12  Homogenios Lithotype 10    
    -- Sg  Krg  Krog  Pcog
    0.00000 0.00000 0.81130 nouvel valeur SGOF
    0.04982 0.00008 0.64904 nouvel valeur SGOF
    0.09965 0.00146 0.49465 nouvel valeur SGOF
    0.14947 0.00633 0.35446 nouvel valeur SGOF
    0.19929 0.01671 0.24850 nouvel valeur SGOF
    0.24912 0.03489 0.17005 nouvel valeur SGOF
    /

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

Discussions similaires

  1. Lire, comparer et modifier 2 fichiers texte
    Par jojo57 dans le forum Langage
    Réponses: 9
    Dernier message: 16/04/2009, 15h58
  2. [vb.net] Modifier un fichier texte
    Par olbi dans le forum Windows Forms
    Réponses: 2
    Dernier message: 06/10/2006, 15h31
  3. lire/ecrire dans un fichier texte
    Par mello dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 13/06/2006, 12h35
  4. comment utiliser Notepad pour modifier un fichier texte?
    Par moon13_698 dans le forum Autres Logiciels
    Réponses: 7
    Dernier message: 06/05/2006, 15h41
  5. [AS400] Lire et modifier un fichier physique en C/S ?
    Par swirtel dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 26/10/2005, 15h58

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