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 :

Utilisation de indexOf()


Sujet :

avec Java

  1. #1
    Membre régulier Avatar de stpaul04
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 271
    Points : 116
    Points
    116
    Par défaut Utilisation de indexOf()
    Bonjour,

    je suis en train d'écrire un code qui me permettrait de récupérer des lignes d'un fichier texte qui comporteraient un chiffre puis de copier le tout vers un nouveau fichier.

    par ex :
    source.txt contient des lignes comme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    2001/01/25 nom prenom 1 adresse pays region heure 11/25/455
    2001/02/26 prenom nom 2 pays regions 25/1/56
    2001/01/25 nom prenom  adresse pays region heure 11/28/455
    2001/01/25 nom prenom  adresse pays region heure 11/28/455
    2001/04/25 nom prenom  adresse pays region heure 11/25/455
    Sur ces 5 lignes je voudrais extraire seulement les lignes qui comportent le 1, et 2 , la ligne 3,4 et 5 qui ne comporte pas de numero je voudrai les ignorer.

    Donc voici mon code ou j'utilise indexof() et j'ai l'impression qu'il y a un problème car quand je l'execute, j'ai une erreur:

    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
    package scannerreadfile;
     
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.Scanner;
     
    public class ScannerReadFile
    {
        private static BufferedWriter bw;
        public static void main(String[] args) throws FileNotFoundException, IOException {
     
            Scanner scanner = null;
             StringBuilder buffer = new StringBuilder();
            FileReader fr = new FileReader("C://Source/Source.txt");
     
            try
            {
     
    Scanner input = new Scanner(fr);
    Boolean lines[] = new Boolean[5];
     
    for(int i = 0; i < 5; i++){
        String line = input.nextLine();
        int index001 = line.indexOf("1");
        int index002 = line.indexOf("2");
        if(index001 >= 0)
            lines[i] = true;
        else if(index002 >= 0)
            lines[i] = true;
        else
            lines[i] = false;
    }
     
    input.close();
     
    Scanner read = new Scanner(fr);
    for(int i = 0; i < 5; i++){
     
        if((lines[i])==true)
        {
            String line = read.nextLine();
     
            //System.out.println(line);
    }
     
    read.close();
    bw=new BufferedWriter(new FileWriter(new File("C:/Target/Target-test.txt"),true));
     
     
    bw.write(buffer.toString());
    bw.newLine();
    bw.close();
     
    }
     
     
     catch (IOException e)
    {
     e.printStackTrace();
            }
    if(bw != null)
     
    scanner.close();
     
     
            }}





    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Exception in thread "main" java.util.NoSuchElementException: No line found
            at java.util.Scanner.nextLine(Scanner.java:1516)
            at scannerreadfile.ScannerReadFile.main(ScannerReadFile.java:27)
    Java Result: 1

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    pour lire un stream ligne par ligne, utiliser un BufferedReader et pas un scanner. Ensuite, indexOf("1") renverra toujours une valeur supérieur à 0 puisque toutes les lignes comportent le chiffre 1:
    Utilisez de préférence les expressions régulières pour sélectionner vos lignes

  3. #3
    Membre régulier Avatar de stpaul04
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 271
    Points : 116
    Points
    116
    Par défaut
    Ah oui j'ai oublié de dire Merci Thize pour ta réponse.
    ssmano

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

Discussions similaires

  1. Je n'arrive pas à utiliser Vector.indexOf()
    Par popollux dans le forum Langage
    Réponses: 22
    Dernier message: 15/12/2010, 14h55
  2. [DEbutant] Utilisation Arraylist (indexof)
    Par MrAlex dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 25/06/2010, 11h09
  3. utiliser indexOf et les variables
    Par phpaide dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 24/05/2006, 15h59
  4. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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