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 :

Lecture d'un fichier texte


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    988
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 988
    Par défaut Lecture d'un fichier texte
    Bonjour,


    Ma question est la suivante:

    Il est connu que dans les fichiers texte sous windows les caractères sont codés sur un octet alors qu'ils sont codés sur deux octets en java.
    Donc pour lire un fichier texte en java, on utilise la méthode de lecture read() qui permet de lire un octet.
    Ensuite, on convertit l'octet lu en donnée de type char,

    Comme on peut voir dans les lignes de code ci-dessous
    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
    import java.io.*;
    public class LireFichier{
     
    String nomfichier;
    FileInputStream fichier;
    int c;
    Terminal.ecrireString("Entrez le nom du fichier à afficher");
    nomfichier = Terminal.lireString();
    try{
     
    fichier = new FileInputStream(nomFichier);
    c=fichier.read();
    while(c!=-1){
    Terminal.ecrireChar((char)c);
    c=fichier.read();
    }
    Les méthodes lireString et ecrireString sont des méthodes crées pour lire et écrire une chaîne d ecaractères.

    Pouvez vous me dire pourquoi la variable c doit être de type int?
    La lecture d'un octet revient-elle à lire un chiffre?

    Par ailleurs, quand on appelle la méthode read() , cela permet il vraiment de lire le premier caractère de la ligne suivante ce qui signifie qu'à chaque fois qu'on l'appelle on change de ligne?

    Merci beaucoup de votre aide.

    Cordialement.

    Nathalie

  2. #2
    Membre émérite Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    tout simplement car read() renvoi -1 à la fin du fichier

    Returns:
    the next byte of data, or -1 if the end of the file is reached.

  3. #3
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Citation Envoyé par harbonne Voir le message
    Par ailleurs, quand on appelle la méthode read() , cela permet il vraiment de lire le premier caractère de la ligne suivante ce qui signifie qu'à chaque fois qu'on l'appelle on change de ligne?
    Il faut savoir que les espaces, les tabulations, les sauts de ligne... sont des caractères, donc on sait qu'on est arrivé à la fin d'une ligne sur la lecture lorsqu'un à le caractère \n par exemple

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    988
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 988
    Par défaut saut de ligne méthode read()
    Merci de ta réponse.

    Pouurais tu me dire si les sauts de ligne se produisent automatiquement après un caractère #.
    Sinon, pour la lecture d'un numérique à chaque lecture d'un octet, que peux tu me dire?

    Merci à toi.

    Cordialement.
    Nathalie

  5. #5
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Citation Envoyé par harbonne Voir le message
    Pourrais tu me dire si les sauts de ligne se produisent automatiquement après un caractère #.
    A priori, il n'y a pas de raison que ça soit ainsi. Peut être que le fichier que tu lis est construit comme ca, mais je ne pense pas qu'on puisse généralisé ça à tout type de fichiers !?!
    Le saut de ligne est vraiment un caractère spécial à part.


    Citation Envoyé par harbonne Voir le message
    Sinon, pour la lecture d'un numérique à chaque lecture d'un octet, que peux tu me dire?
    La méthode read de la classe FileInputStream renvoie un entier qui est la correspondance du caractère lu par rapport à une table de caractère (j'avoue pas savoir laquelle...)
    Le fait de faire (char)c, va retranscrire sous forme d'un caractère l'entier.
    Mais finalement avoir le caractère sous forme d'entier n'a pas grand intérêt si ce n'est de détecter quand on est à la fin du fichier (cas de l'entier = -1)

  6. #6
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Citation Envoyé par zorm Voir le message
    La méthode read de la classe FileInputStream renvoie un entier qui est la correspondance du caractère lu par rapport à une table de caractère (j'avoue pas savoir laquelle...)
    Le fait de faire (char)c, va retranscrire sous forme d'un caractère l'entier.
    Mais finalement avoir le caractère sous forme d'entier n'a pas grand intérêt si ce n'est de détecter quand on est à la fin du fichier (cas de l'entier = -1)
    Il n'y a aucune notion de table de caractère à ce niveau.
    Il n'y en n'a pas non plus pour un "char".
    int est un entier signé 32 bits, char est un entier non signé 8 bits.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

Discussions similaires

  1. Lecture d'un fichier texte dans un projet TOMCAT
    Par brice_nice dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 03/07/2005, 15h04
  2. lecture d'un fichier texte
    Par benahpets dans le forum MFC
    Réponses: 5
    Dernier message: 22/06/2005, 11h50
  3. [C#] Lecture d'un fichier texte (farfelu)
    Par choas dans le forum Windows Forms
    Réponses: 3
    Dernier message: 11/04/2005, 14h33
  4. Lecture d'un fichier Texte
    Par jcharles dans le forum Bases de données
    Réponses: 8
    Dernier message: 27/10/2004, 14h58
  5. Stockage de données & lecture d'un fichier texte
    Par petitours dans le forum C++Builder
    Réponses: 6
    Dernier message: 13/03/2004, 14h05

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