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 :

Problème avec BufferedReader


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 3
    Par défaut Problème avec BufferedReader
    Bonjour,

    J'ai le problème suivant avec mon buffered Reader : la première ligne de mon fichier texte est ignorée...
    Et j'obtiens l'erreur suivante lorsque que le fichier texte ne contient qu'une ligne ou est vide :
    ***
    Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
    ***
    Ci-dessous un extrait de 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
     private char[] data = new char[1024];
     
     
    private void lecture(File fichier)
        {
            int carlus=0;
            try {
     
                BufferedReader lecteur = new BufferedReader(new InputStreamReader(new FileInputStream(fichier)));
     
                if (fichier.length() != 0) {
                    while ((lecteur.readLine())!=null){
                        try { 
                            carlus = lecteur.read(data);
                        } 
                        catch (IOException e){
                                System.out.println("erreur de lecture");
                                System.out.println(e);
                        }
                        for (int i=0;i<(carlus);i++){
                            faireVector(data[i]);
                            System.out.print(data[i]);
                        }
     
                    } 
                    lecteur.close();
                }
                else {
                    System.out.println("votre fichier est vide");
                }
            }
            catch (Exception err) {
                System.out.println(err);
            }
     
        }
    ************
    Toutes les suggestions sont les bienvenues,
    merci d'avance et bonne journée ;-)

    Kokatou.

  2. #2
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par kokatou
    while ((lecteur.readLine())!=null){
    try {
    carlus = lecteur.read(data);
    }
    C'est assez logique, car tu lis une ligne, donc ca fait une ligne de moins et ensuite seulement tu lis un caractères, donc tu vas lire ton caractère seulement à partir de la deuxième ligne

  3. #3
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 3
    Par défaut
    Après avoir jeter un oeil dans la FAQ, je trouve le code suivant :
    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
     
    public static void toISO(String source, String destination){
          BufferedReader br = null;
          PrintWriter pw = null;
          try{
             //flux de lecture en UTF-8
             br = new BufferedReader(
                   new InputStreamReader(
                         new FileInputStream(source),"UTF-8"));
             //flux d'écriture en ISO (valeur par défaut)
             pw = new PrintWriter(new FileOutputStream(destination));
             String ligne;
             while((ligne = br.readLine())!=null){
                pw.println(ligne);
             }
          }catch(Exception e){e.printStackTrace();}   
          finally{
             try { pw.close(); } catch( Throwable e ) {}
             try { br.close(); } catch( Throwable e ) {} 
          }
       }
    Il me semble que c'est exactement le même code que moi
    Au détail près que je n'essai pas de copier le fichier avec le PrintWriter.

    Je ne comprend pas ce que je dois changer...
    Puis-je avoir quelques précisions, voire le bout de code à remplacer si possible.

    Merci

  5. #5
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    Il faut tenir un minimum compte des reponses qu'on te donne, notamment celle de wichtounet...

    mais comme je suis gentil au fond , je te donne la différence entre les deux bouts de codes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while((ligne = br.readLine())!=null)
    à toi maintenant d'agir en conséquence.
    Je te conseille aussi de regarder cet excellent tutorial sur java.io .


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 3
    Par défaut

    Merci à tous , mon problème a été résolu en supprimant la boucle "while" qui, comme me l'indiquait Wichtounet lisait déjà la première ligne avant de passer à la seconde...

    A bientot,
    kokatou.

Discussions similaires

  1. Problème avec BufferedReader
    Par gabriel849 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 12/10/2014, 00h00
  2. Problème avec BufferedReader()
    Par *SunBoTi* dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 13/10/2008, 12h38
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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