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 :

Extraire une ligne d'un fichier selon un critère


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 18
    Par défaut Extraire une ligne d'un fichier selon un critère
    J'aimerais savoir s'il est possible de retirer un chiffre donné dans le run dans un fichier.txt.
    Par exemple dans le run je demande"Quel nombre voulez vous retirer entre 1 et 100 ?" L'utilisateur rentre un chiffre disponible dans le fichier et ensuite je veux que toute la ligne du nombre choisi par l'utilisateur sort en output à partir du fichier. Donc si l'utilisateur rentre 100. Dans mon fichier la ligne de 100 serait "100;Bonjour,allo". Si c'est possible comment on fait. Merci pour vos réponses d'avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    La méthode static lines() de la classe java.nio.Files permet de parcourir aisément le contenu d'un fichier. Cette méthode renvoie un Stream<String> qui permet de parcourir le contenu du fichier (c-a-d sans devoir manuellement ouvrir un flux vers le fichier et parcourir son contenu ligne a ligne). Pour le reste a toi de construire une expression régulière en fonction de la saisie utilisateur (genre "\\*100\\*") qui permettra de tester le contenu de chaque ligne (ça tombe bien la classe Stream<String> a une méthode filter(Predicate<String>) qui renvoie un flux de chaînes qui vérifient le prédicat passé en argument).
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 18
    Par défaut
    Ah d’accord merci!

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    J'ajouterais que pour réécrire le fichier tu peux utiliser une autre méthode de java.nio.Files, write().

    Par exemple, ce programme supprime les lignes vides, ou ne contenant que des espaces, du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Path path = Paths.get("fichier.txt");
     
    List<String> list = Files.lines(path)
    	     .filter(Predicate.not(String::isBlank))
    	     .collect(Collectors.toList());
    Files.write(
         path,
         list);
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 18
    Par défaut
    En fait, je ne vois toujours pas comment faire, c'est une des étapes de mon projet à remettre a mon collège et si je vous mettez en contexte peut être vous allez mieux comprendre ce que je veux dire, mais en gros j`essaie de prendre des informations specifique d`un fichier et le mettre dans un autre fichier et l`afficher dans le outpu, et dans mon cours nous n'avons pas vu la fonction import.java.nio nous avons que vu import.java.io:






    "Étapes 2
    Si l’utilisateur choisit 2 : Afficher les aliments en fonction d’une valeurs nutritives choisie par l’utilisateur.
    Le programme affiche les valeurs et enregistre le tout dans un fichier (nutrition_Sodium.csv)
    L’affichage doit ressembler comme ci-dessous. (ça doit être trié )
    Étapes 2 (suite)
    Le fichier nutrition_Sodium.csv doit être composé de : ID ;Catégorie ;Déscription; sodium et doit être trié en fonction de l’élément avec la composition la plus élevée de sodium.
    vous devez faire la même chose pour les autres nutriments
    Idé;Catégorieé;Descriptioné;Sodium
    Code console : 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
     Exemple:
    21 Croquettes Chicken McNuggets  (20 piece) 2280 
    57 Sandwich Grilled Chicken Flatbread 1590 
    126 Déjeuners Steak Egg & Cheese Bagel 1540 
    120 Déjeuners Spanish Omelete Bagel 1520 
    59 Déjeuners Ham Egg & Cheese Bagel 1500 
    48 Sandwich Double Quarter Pounder  with Cheese  1450 
    8 Déjeuners Big Déjeuners 1430 
    2 Déjeuners Bacon Egg & Cheese Biscuit 1360 
    111 Déjeuners Sausage Egg & Cheese McGriddlesé 1290 
    3 Déjeuners Bacon Egg & Cheese McGriddlesé 1270 
    102 Sandwich Quarter Pounder  with Cheese  1250 
    47 Sandwich Double Cheeseburger 1220 
    41 Salades Crispy Chicken California Cobb Salad 1170 
    20 Croquettes Chicken McNuggets  (10 piece) 1140 
    38 Sandwich Crispy Chicken 1100 
    9 Sandwich Big Mac  1050 
    39 Salades Crispy Chicken Bacon Ranch Salad 1040 
    11 Sandwich Big N' Tasty  with Cheese 1030 
    109 Déjeuners Sausage Biscuit with Egg 1010 
    112 Déjeuners Sausage McGriddlesé 970 
    56 Salades Grilled Chicken California Cobb Salad 960 
    93 Vinaigrettes é salades Newman's Own  Light Balsamic Vinaigrette? 950 
    108 Déjeuners Sausage Biscuit 930 
    114 Déjeuners Sausage McMuffin  with Egg 930 
    19 Sandwich Chicken McGrill  890 
    40 Salades Crispy Chicken Caesar Salad 890 
    49 Déjeuners Egg McMuffin  840 
    84 Sandwich McChicken  840 
    54 Salades Grilled Chicken Bacon Ranch Salad 830 
    69 Sandwich Hot 'n Spicy McChicken  830 
    138 Desserts Vanilla Triple Thické Shake (32 fl oz cup) 810 
    18 Sandwich Cheeseburger 800 
    10 Sandwich Big N' Tasty  790 
    113 Déjeuners Sausage McMuffin  790 
    101 Sandwich Quarter Pounder   780 
    73 Déjeuners Hotcakes (margarine 2 pats & syrup)
    nutrition_sodium .csv
    (l’utilisateur doit avoir la possibilité de choisir de produire le fichier csv pour l’ensemble des différents nutriments.
    nutrition_energie.csv
    nutrition_gras.csv
    nutrition_protéine.csv
    nutrition_colesterol.csv
    tous les fichiers doivent être triés en fonction de l'élément dont il est question. par exemple nutrition_gras.csv sera trié en fonction des valeurs de gras.)



    Le fichier en question ressemble a ceci:
    Code console : 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
    Id;Catégorie;Description;Energ_Kcal;Protéine;gras;Cholestérol;Sodium
    1;Breuvages;Lowfat Milk;100;8;2;10;115
    2;Déjeuners;Bacon Egg & Cheese Biscuit;480;21;31;250;1360
    3;Déjeuners;Bacon Egg & Cheese McGriddles™;450;19;23;240;1270
    4;Salades;Bacon Ranch Salad (without chicken);140;9;10;25;310
    5;Déjeuners;Bagel (plain);260;9;1;0;520
    6;Desserts;Baked Apple Pie;260;3;13;0;200
    7;Croquettes;Barbeque Sauce;45;0;0;0;250
    8;Déjeuners;Big Déjeuners;710;24;48;455;1430
    9;Sandwich;Big Mac ;580;24;33;85;1050
    10;Sandwich;Big N' Tasty ;530;24;32;80;790
    11;Sandwich;Big N' Tasty  with Cheese;580;26;37;95;1030
    12;Déjeuners;Biscuit;240;4;11;0;640
    13;Salades;Butter Garlic Croutons;50;1;1;0;140
    14;Desserts;Butterfinger   McFlurry ™ (12 fl oz cup);620;16;22;70;260
    15;Desserts;Butterfinger  McFlurry™ (16 fl oz cup);900;23;31;100;370
    16;Salades;Caesar Salad (without chicken);90;7;4;10;170
    17;Salades;California Cobb Salad (without chicken);160;11;11;85;450
    18;Sandwich;Cheeseburger;330;15;14;45;800
    19;Sandwich;Chicken McGrill ;400;25;17;60;890
    20;Croquettes;Chicken McNuggets  (10 piece);510;25;33;85;1140
    21;Croquettes;Chicken McNuggets  (20 piece);1030;49;65;170;2280
    22;Croquettes;Chicken McNuggets  (4 piece);210;10;13;35;460
    23;Croquettes;Chicken McNuggets  (6 piece);310;15;20;50;680
    24;Desserts;Chocolate Chip Cookie ;170;2;9;5;150
    25;Desserts;Chocolate Triple Thick™ Shake (12 fl oz cup);430;11;12;50;210
    26;Desserts;Chocolate Triple Thick™ Shake (16 fl oz cup);580;15;17;65;280
    27;Desserts;Chocolate Triple Thick™ Shake (21 fl oz cup);750;19;22;90;360
    28;Desserts;Chocolate Triple Thick™ Shake (32 fl oz cup);1150;30;33;135;550
    29;Déjeuners;Cinnamon Roll ;340;5;15;35;250
    30;Breuvages;Coca-Cola Classic  (Child) ;110;0;0;0;10
    31;Breuvages;Coca-Cola Classic  (Large) ;310;0;0;0;30
    32;Breuvages;Coca-Cola Classic  (Medium) ;210;0;0;0;20
    33;Breuvages;Coca-Cola Classic  (Small) ;150;0;0;0;15
    34;Breuvages;Coca-Cola Classic  (Super Size ) ;410;0;0;0;40
    35;Breuvages;Coffee (Large);10;0;0;0;10
    36;Breuvages;Coffee (Medium);5;0;0;0;5
    37;Breuvages;Coffee (Small);0;0;0;0;0
    38;Sandwich;Crispy Chicken;500;22;26;50;1100
    39;Salades;Crispy Chicken Bacon Ranch Salad;370;26;21;65;1040
    40;Salades;Crispy Chicken Caesar Salad;310;23;16;50;890
    41;Salades;Crispy Chicken California Cobb Salad;380;27;23;125;1170
    42;Breuvages;Diet Coke  (Child) ;0;0;0;0;20
    43;Breuvages;Diet Coke  (Large) ;0;0;0;0;60
    44;Breuvages;Diet Coke  (Medium) ;0;0;0;0;40
    45;Breuvages;Diet Coke  (Small) ;0;0;0;0;30
    46;Breuvages;Diet Coke  (Super Size ) ;0;0;0;0;75
    47;Sandwich;Double Cheeseburger;480;25;27;85;1220
    48;Sandwich;Double Quarter Pounder  with Cheese ;760;46;48;165;1450
    49;Déjeuners;Egg McMuffin ;300;18;12;235;840
    50;Déjeuners;English Muffin;150;5;2;0;270
    51;Sandwich;Filet-O-Fish ;470;15;26;50;730
    52;Desserts;Fruit 'n Yogurt Parfait (w/o granola)¯;280;8;4;15;115
    53;Desserts;Fruit 'n Yogurt Parfait¯;380;10;5;15;240
    54;Salades;Grilled Chicken Bacon Ranch Salad;270;28;13;75;830
    55;Salades;Grilled Chicken Caesar Salad;210;26;7;60;680
    56;Salades;Grilled Chicken California Cobb Salad;280;30;14;130;960
    57;Sandwich;Grilled Chicken Flatbread;520;28;22;70;1590
    58;Breuvages;Half & Half Creamer;15;0;1;5;0
    59;Déjeuners;Ham Egg & Cheese Bagel;550;26;23;255;1500
    60;Sandwich;Hamburger;280;12;10;30;560
    61;Déjeuners;Hash Browns;130;1;8;0;330
    62;Breuvages;Hi-C  Orange Drink (Child) ;120;0;0;0;20
    63;Breuvages;Hi-C  Orange Drink (Large) ;350;0;0;0;60
    64;Breuvages;Hi-C  Orange Drink (Medium) ;240;0;0;0;40
    65;Breuvages;Hi-C  Orange Drink (Small) ;160;0;0;0;30
    66;Breuvages;Hi-C  Orange Drink (Super Size ) ;460;0;0;0;75
    67;Croquettes;Honey;45;0;0;0;0
    68;Croquettes;Honey Mustard Sauce;50;0;4;10;95
    69;Sandwich;Hot 'n Spicy McChicken ;450;15;26;45;830
    70;Desserts;Hot Caramel Sundae;360;7;10;35;180
    71;Desserts;Hot Fudge Sundae;340;8;12;30;170
    72;Croquettes;Hot Mustard Sauce;60;1;3;5;240
    73;Déjeuners;Hotcakes (margarine 2 pats & syrup);600;9;17;20;770
    74;Breuvages;Iced Tea (Child);0;0;0;0;5
    75;Breuvages;Iced Tea (Large);0;0;0;0;20
    76;Breuvages;Iced Tea (Medium);0;0;0;0;15
    77;Breuvages;Iced Tea (Small);0;0;0;0;10
    78;Breuvages;Iced Tea (Super Size );0;0;0;0;25
    79;Desserts;Kiddie Cone;45;1;1;5;20
    80;Frites;Large Frites;540;8;26;0;350
    81;Croquettes;Light Mayonnaise?;45;0;4;10;100
    82;Desserts;M&M  McFlurry™ (12 fl oz cup);630;16;23;75;210
    83;Desserts;M&M  McFlurry™ (16 fl oz cup);910;23;33;105;300
    84;Sandwich;McChicken ;430;14;23;45;840
    85;Desserts;McDonaldland  Chocolate Chip Cookies;280;3;14;40;170
    86;Desserts;McDonaldland  Cookies;230;3;8;0;250
    87;Frites;McValue  Frites;320;5;16;0;210
    88;Frites;Medium Frites;450;6;22;0;290
    89;Desserts;Nestle Crunch  McFlurry™ (12 fl oz cup);630;16;24;75;230
    90;Desserts;Nestle Crunch  McFlurry™ (16 fl oz cup);920;23;35;110;340
    91;Vinaigrettes à salades;Newman's Own  Cobb Dressing;120;1;9;10;440
    92;Vinaigrettes à salades;Newman's Own  Creamy Caesar Dressing;190;2;18;20;500
    93;Vinaigrettes à salades;Newman's Own  Light Balsamic Vinaigrette?;90;0;8;0;950
    94;Vinaigrettes à salades;Newman's Own  Ranch Dressing;290;1;30;20;530
    95;Desserts;Nuts (for Sundaes);40;2;3;0;55
    96;Breuvages;Orange Juice (12 fl oz cup);140;2;0;0;5
    97;Breuvages;Orange Juice (16 fl oz cup);180;3;0;0;5
    98;Breuvages;Orange Juice (21 fl oz cup);250;4;0;0;10
    99;Desserts;Oreo  McFlurry™ (12 fl oz cup);570;15;20;70;280
    100;Desserts;Oreo  McFlurry™ (16 fl oz cup);820;22;29;100;420
    101;Sandwich;Quarter Pounder  ;420;23;21;70;780
    102;Sandwich;Quarter Pounder  with Cheese ;530;28;30;95;1250
    103;Desserts;Raspberry Triple Thick™ Shake (12 fl oz cup) ;420;11;12;50;150
    104;Desserts;Raspberry Triple Thick™ Shake (16 fl oz cup) ;560;14;16;65;190
    105;Desserts;Raspberry Triple Thick™ Shake (21 fl oz cup) ;730;19;21;90;260
    106;Desserts;Raspberry Triple Thick™ Shake (32 fl oz cup) ;1120;28;32;135;390
    107;Déjeuners;Sausage;170;6;16;35;290
    108;Déjeuners;Sausage Biscuit;410;10;28;35;930
    109;Déjeuners;Sausage Biscuit with Egg;490;16;33;245;1010
    110;Déjeuners;Sausage Déjeuners Burrito ;290;13;16;170;680
    111;Déjeuners;Sausage Egg & Cheese McGriddles™;550;20;33;260;1290
    112;Déjeuners;Sausage McGriddles™;420;11;23;35;970
    113;Déjeuners;Sausage McMuffin ;370;14;23;50;790
    114;Déjeuners;Sausage McMuffin  with Egg;450;20;28;260;930
    115;Déjeuners;Scrambled Eggs (2);160;13;11;425;170
    116;Salades;Side Salad;15;1;0;0;10
    117;Frites;Small Frites;210;3;10;0;135
    118;Desserts;Snack Size Fruit 'n Yogurt Parfait (w/o granola)¯;130;4;2;5;55
    119;Desserts;Snack Size Fruit 'n Yogurt Parfait¯;160;4;2;5;85
    120;Déjeuners;Spanish Omelete Bagel;710;27;40;275;1520
    121;Breuvages;Sprite  (Child) ;110;0;0;0;40
    122;Breuvages;Sprite  (Large) ;310;0;0;0;115
    123;Breuvages;Sprite  (Medium) ;210;0;0;0;80
    124;Breuvages;Sprite  (Small) ;150;0;0;0;55
    125;Breuvages;Sprite  (Super Size ) ;410;0;0;0;150
    126;Déjeuners;Steak Egg & Cheese Bagel;640;31;31;265;1540
    127;Desserts;Strawberry Sundae;290;7;7;30;95
    128;Desserts;Strawberry Triple Thick™ Shake (12 fl oz cup);420;11;12;50;140
    129;Desserts;Strawberry Triple Thick™ Shake (16 fl oz cup);560;14;16;65;190
    130;Desserts;Strawberry Triple Thick™ Shake (21 fl oz cup);730;19;21;90;250
    131;Desserts;Strawberry Triple Thick™ Shake (32 fl oz cup);1120;28;32;135;380
    132;Frites;Super Size  Frites;610;9;29;0;390
    133;Croquettes;Sweet 'N Sour Sauce;50;0;0;0;140
    134;Desserts;Vanilla Reduced Fat Ice Cream Cone;150;4;4;20;75
    135;Desserts;Vanilla Triple Thick™ Shake (12 fl oz cup);430;11;12;50;300
    136;Desserts;Vanilla Triple Thick™ Shake (16 fl oz cup);570;14;16;65;400
    137;Desserts;Vanilla Triple Thick™ Shake (21 fl oz cup);750;18;21;90;530
    138;Desserts;Vanilla Triple Thick™ Shake (32 fl oz cup);1140;28;32;135;810

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Avec java.io, le principe c'est de lire un fichier texte avec BufferedReader. Cette classe a également la méthode lines() qui retourne un Stream<String> donc le principe rese applicable. Mais peut-être n'as-tu pas vu les Stream en cours. Dans ce cas, il faut lire le fichier ligne à ligne avec un bon vieux readLine().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    List<String> lines = new ArrayList<>();
    try(BufferedReader reader = new BufferedReader(new FileReader( nomFichierSource ))) {
        for(String line = reader.readLine(); line!=null; line = reader.readLine()) {
    	lines.add(line);	    	  
        }
    }
    Pour écrire, on peut utiliser un BufferedWriter, mais c'est plus simple d'utiliser un PrintWriter, car ses méthodes ressemblent aux méthodes qu'on utilise pour System.out.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    try(PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter( nomFichierDestination  )))) {
        boolean first=true;
        for(String line : lines) {
            if ( first ) first=false; else writer.println(); // juste pour éviter qu'on ait un retour chariot après la dernière ligne 
    	writer.print(line);
        }
    }
    Au niveau du traitement, il te faut pouvoir tester le contenu des lignes. Tu peux utiliser la méthode préconisée par @Bouye avec des expressions régulières. Mais comme ton format est du csv, tu peux aussi découper chaque ligne en utilisant le ; comme séparateur. S'il n'existe pas de ; dans les valeurs, tu peux utiliser String.split() facilement.

    Tu peux faire le filtrage au moment où tu lis le fichier et que tu construis la liste. Mais à priori tu dois faire plusieurs fichiers en sortie. Autant lire une fois la liste et s'en servir pour chaque cas, donc en dehors de la liste de lecture

    Comme tu as une ligne d'entête, il ne faut pas la traiter comme les autres. Autant l'exclure après avoir lue le fichier, ou ne pas en tenir compte à la lecture (sur le même système à base de booléen que j'ai utilisé dans la boucle d'écriture). Pour la suppression de l'entête après lecture, il suffit de simplement faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lines.remove(0); // supprime la ligne d'entête
    Eventuellement, tu peux la stocker, ce qui peut aider pour faire d'autres traitements si nécessaire (par exemple, pour trouver les positions des colonnes par le nom) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String[] columns = lines.remove(0).split(";"); // supprime la ligne d'entête et stocke les  noms de colonnes dans un tableau
    Ainsi columns[1] est le nom de la colonne 1, soit "Catégorie".


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    List<String[]> breuvages = new ArrayList<>();
        for(String line : lines) {
            String[] fields = line.split(";"); // découpe la ligne suivant les ; et récupére chaque colonne dans un tableau
            if ( fields[1].equals( "Breuvages" ) { // on filtre pour ne prendre que les catégories "Breuvages"
    	     breuvages.add(fields);	    	  
            }
        }
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    try(PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter( "breuvages.txt" )))) {
        boolean first=true;
        for(String[] fields: breuvages ) {
            if ( first ) first=false; else writer.println(); // juste pour éviter qu'on ait un retour chariot après la dernière ligne 
    	writer.print(String.join(";",fields);
        }
    }
    Ensuite tu dois trier la liste avant de l'exporter (d'écrire le fichier). Ce que tu peux faire avec Collections.sort(List, Comparator), en faisant un Comparator<String[]> qui va comparer les colonnes qu'il faut comparer selon le fichier voulu.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Extraire une ligne d'un fichier en bash
    Par cycycysisisi dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 25/06/2014, 16h13
  2. [XL-MAC 2008] Extraire une ligne selon contenu d'une colonne
    Par jmignot dans le forum Excel
    Réponses: 8
    Dernier message: 11/04/2011, 09h17
  3. Réponses: 6
    Dernier message: 10/11/2009, 19h08
  4. extraire une ligne positionnée dans X fichiers
    Par AlexFred dans le forum Langage
    Réponses: 2
    Dernier message: 18/04/2008, 17h42
  5. Extraire Une Ligne Du Fichier
    Par chakcc dans le forum C
    Réponses: 2
    Dernier message: 16/10/2006, 11h45

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