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

C# Discussion :

Lecture fichier binaire "imbriqué"


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 140
    Points : 53
    Points
    53
    Par défaut Lecture fichier binaire "imbriqué"
    Bonjour,

    J'ai un fichier binaire avec la structure suivante:
    En-tête: 2 entiers sur 4 octets
    - km: pointeur en octet sur le bloc de données
    - nvhl
    N blocs (N est une valeur connue)
    - nvhl couples suivants:
    - np: pointeur de début des données
    - vp: nombre d'éléments
    Données:
    pour les bloc de données dont le pointeur est np:
    - vi: vecteur d'entiers (de taille vp) sur 2 octets
    - pi: vecteur d'entiers (de taille vp) sur 2 octets


    Pour l'instant je fais la chose suivante:
    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
                FileStream fs = new FileStream("monfichier.dat", FileMode.Open, FileAccess.Read);
                BinaryReader br = new BinaryReader(fs);
                int np, vp;
                //lecture en-têtes
                _AudFic.KM = br.ReadInt32(); //pointeur en octets sur le bloc de données
                _AudFic.Nvhl = br.ReadInt32(); //nvhl = nsta x nbth = 26880 (si nsta=35 et nbth=96)
     
                //boucle sur les stations
                for (int i = 0; i < N; i++)
                {
                    //boucle sur les vehicules
                    for (int j = 0; j < _AudFic._nvhl/N; j++)
                    {
                        np = br.ReadInt32();
                        vp = br.ReadInt32();
                    }
                }
                br.Close();
                fs.Close();

    Donc à ce stade je lis les en-têtes et les N blocs.
    Mon problème est que j'aimerais au moment où je lis np et vp, pouvoir lire les données correspondantes dans la partie "données" du fichier, mais sans perdre ma position courante.
    Le but est de stocker dans un objet uniquement les en-têtes et les données.

    Merci pour votre aide.
    Ben

  2. #2
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Tu mémorises la position dans le flux avant d'aller lire la partie données
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int position;
    ...
    position = fs.Position;
    et tu la restaures ensuite pour revenir sur les entêtes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fs.Position = position;

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 140
    Points : 53
    Points
    53
    Par défaut
    Merci !

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

Discussions similaires

  1. Lecture fichier binaire et inversion d'octets
    Par zoro_le_renard dans le forum Fortran
    Réponses: 8
    Dernier message: 17/07/2007, 20h35
  2. Lecture fichier binaire
    Par kek_net dans le forum Langage
    Réponses: 5
    Dernier message: 07/08/2006, 19h37
  3. Lecture fichier binaire
    Par gabule dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 30/05/2006, 15h53

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