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

Langage Java Discussion :

Récupérer le premier caractère lu de la dernière ligne présente dans un fichier


Sujet :

Langage Java

  1. #1
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut Récupérer le premier caractère lu de la dernière ligne présente dans un fichier
    Bonsoir ,

    Je m'initie à la lecture dans les fichiers avec la classe BufferedReader et InputStream. Dans un fichier texte je voudrai récupérer le premier caractère lu de la dernière ligne présente dans ce fichier
    exemple :
    Code txt : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    3 Algernon Littlehorn

    Je veux donc récupérer le chiffre 3 pour m'en servir comme identifiant incrémenté par la suite

    Voici mon code Java
    Code java : 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
     
     BufferedReader inFile = null;
            Character c = null;
            Integer id = null;
            try {
                InputStream inputStream = new FileInputStream("C:/bookEntry/personnes.txt");
                inFile = Files.newBufferedReader(file, Charset.forName("UTF-8"));
                char[] cbuf = new char[inputStream.available()];           
                String currentLine;
                // Récupérer le premier caractère lu de la dernière ligne présente dans le fichier  
                while ((currentLine = inFile.readLine()) != null) {
                    c = currentLine.charAt(0);
                    id = inFile.read(cbuf, 0, 1);
                }
            } catch (IOException ex) {
                Logger.getLogger(PersonneFactoryImpl.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                try {
                    inFile.close();
                } catch (IOException ex) {
                    Logger.getLogger(PersonneFactoryImpl.class.getName()).log(Level.SEVERE, null, ex);
                }
            }

    Je récupère bien le 1er caractère avec
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    currentLine.charAt(0);
    mais il est de type Character donc pas utilisable puisque mes identifiants sont des Integer.
    Je me suis dit que je trouverai mon "bonheur" avec la méthode
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    public int read(char[] cbuf, int off, int len)

    Merci d'avance.
    Transact.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Erm....

    Pour transformer le char '3' en int 3 il suffit de faire quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char digit = '3';
    int converted = digit - '0';
    read() ne fait pas du tout ce que tu crois... Et c'est inquiétant que tu aies cru ça. Il permet de lire des octets venant de l'InputStream. Celle que tu as décorée avec un BufferedReader et que tu ne dois donc plus jamais toucher, sous aucun prétexte, si tu veux que le BufferedReader fonctionne.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut
    Bonjour thelvin,

    Merci pour ta réponse ... mais ce que je souhaite c'est récupérer la première valeur de la dernière ligne présente.
    Ta méthode me récupère cette information mais uniquement si celle-ci est mise en "dur" dans le code tandis que je préférerai quelque chose de ce style :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while ((currentLine = inFile.readLine()) != null) {
                    digit = currentLine.charAt(0);
                    id = digit - '0';
                }
    Mais le compilateur me sort le message suivant :
    Code text : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.StringIndexOutOfBoudException: String out of range : 0

  4. #4
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut
    Le problème vient de la conception de mon while. En effet si je supprime le while (donc pas d'itération) sur la chaîne je récupère bien le 1er caractère de la ligne.
    Je vais donc chercher dans cette direction.

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

Discussions similaires

  1. Récupérer 5 premiers caractères
    Par challe1976 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 30/01/2015, 11h33
  2. Réponses: 1
    Dernier message: 10/02/2011, 15h32
  3. Réponses: 2
    Dernier message: 28/08/2009, 15h43
  4. récupérer la valeur de clé de la dernière ligne insérée
    Par colombero dans le forum Langage SQL
    Réponses: 4
    Dernier message: 08/12/2006, 09h23
  5. Réponses: 2
    Dernier message: 02/02/2006, 22h38

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