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 d'un flux Jusqu'à un offset déterminé


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 32
    Par défaut lecture d'un flux Jusqu'à un offset déterminé
    bonjour,

    Je veux lire un flux à partir d'un fichier texte, avec mon Streamreader, j'ai du mal a lire le fichier du début Jusqu'à une position bien déterminé. j'ai tenté d'éssayer avec les propirétés et méthodes corespondantes, mais ocuen n'est satisafaisante. je veux eviter le faite de lire le fichier par des tableaux de char ou de int, pour prendre en charge les grands flux.

    Y'a t'il un moyen pour procéder ?

  2. #2
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 100
    Par défaut
    Pourquoi pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    int i = 0;
    int offset;
    StreamReader stream;
    char c;
     
    while(i<offset && !stream.EndOfStream) {
       c = (char)stream.Read();
       i++;
    }

  3. #3
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    236
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Octobre 2007
    Messages : 236
    Par défaut
    Essais d'ouvrir le fichier avec un objet Stream, positionner avec Stream.Seek et en suite passer l'objet Stream à un StreamReader pour la lecture/écriture...
    J'ai pas testé!

    [EDIT]
    Je crois que j'ai pas bien lu le post, donc, voici une autre proposition pour lire le fichier du début jusqu'à un offset :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
                int start = 0;
                int offset = 1024;
                StreamReader sr = new StreamReader(@"fichier.ext");
                char[] chars = new char[offset - start];
                sr.Read(chars, start, offset);
                string s = new string(chars);
                sr.Close();

  4. #4
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 32
    Par défaut
    Merci les gas pour les réponses. Bobbledople ta oslotution pourra bien faire l'affaire, mais je veux éviter de lire le flux je veux simplemet le récuperer à partir d'un interval donné. comme c'est le cas pour le basStream.position ou il récupere le flux a partir de la position jsuka la fin du flux.

    C'est de meme reeda, je veux esquiver la partie ou j'ai a reecrire le flux. c'est analogiquement semblable a BaseStream.Position ou en recupere le flux de Position juska la fin. Je me demande si ya un moeyen de traiter ca sans consommer le flux ??

  5. #5
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 32
    Par défaut
    pas d'idée sur ca ??

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 100
    Par défaut
    Et tu voudrais le stocker dans quoi? En fait tu veux lire le flux sans faire avancer le curseur c'est ca?

    Tu peux toujour consommer le flux et replacer le curseur avec Stream.Position
    Quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    FileStream stream = File.OpenRead(path);
    int pos = stream.Position;
    byte[] array = new byte[count]; // count est le nombre de caractere à lire
    stream.Read(array, offset, count)
    stream.Position = pos;

  7. #7
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 32
    Par défaut
    Bjr,

    De meme, je veux eviter d'utiliser un tableau de bite pour eviter de parcourir tout le flux,et cela dans le soucis de pourvoir traiter des grands flux.

    Aparement, Microsoft ne propose pas de solution évoluée pour récuperer un flux à partir d'un intervalle donné.

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

Discussions similaires

  1. Treeview: déployer jusqu'à un niveau déterminé
    Par tAKAmAkA dans le forum Access
    Réponses: 5
    Dernier message: 04/03/2007, 15h03
  2. [RSS] Lecture d'un flux
    Par jacquesprogram dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 12/10/2006, 10h13
  3. Lecture d'un flux RSS en C
    Par geexskill dans le forum Réseau
    Réponses: 4
    Dernier message: 28/08/2006, 13h58
  4. [FLASH MX] Lecture d'un flux XML
    Par oxa dans le forum Flash
    Réponses: 2
    Dernier message: 02/06/2006, 12h33
  5. [Réseau] détecter la fin de lecture dans un flux entrant
    Par al85 dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 30/03/2005, 21h06

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