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

VB.NET Discussion :

Erreur File.ReadAllBytes comment Lire octet d'un stream volumineur


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 41
    Par défaut Erreur File.ReadAllBytes comment Lire octet d'un stream volumineur
    Bonjour,

    Je travail sur un projet qui me pose quelque souci sur la convertion de stream.

    J'essaye de convertir un stream en byte(). Pour cela j'utilise la methode File.ReadAllBytes mais je me retrouve à un problème de ressource qui semble être connu puisque je travail avec des fichiers volumineux.

    J'ai donc souhaitai parcourir mon stream par "morceau" et intégré chaque partie à une variable globale. Mais je ne trouve pas d'exemple qui vont dans ce sens. J'arrive à faire un code similaire si j'initialise un File.Open et que j'ecris à chaque passage ce que je li.

    Cette solution colle presque à ce que j'attend mais à la place d'ecrire dans le FileOpen j'aurai besoin d'alimenté et de compléter un tableau de byte à chaque passage.

    Ma solution est peut etre pas cohérente mais je ne vois pas d'autre solution pour obtenir un tableau de byte contenant l'ensemble de mon stream sans prendre le risque d'avoir une exception de memoire insuffisante.

    Auriez vous des solutions à me proposer ?

    En vous remerciant d'avance

  2. #2
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Utilise la classe IO.Stream. Elle contient tout ce qu'il faut pour faire ce que tu souhaites.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 41
    Par défaut
    J'ai cherchė justement avec mes pauvre connaissance vers la methode stream en essayant un code similaire a celui ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim buffer As Byte() = New Byte(16 * 1024 - 1) {}
    Using ms As New MemoryStream()
    	Dim read As Integer
    	While (InlineAssignHelper(read, input.Read(buffer, 0, buffer.Length))) > 0
    		ms.Write(buffer, 0, read)
    	End While
    	Return ms.ToArray()
    End Using
    Mon probleme c'est que dans mon contexte je ne peux pas creer de nouveau projet. Je souhaiterai que mon byte reste en memoir puisque une fois que mon byte() et completė je le stock. Il y a certainement un methode qui permet de le faire mais mes tests non pas ete concluant.

    Merci pour votre indication

  4. #4
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Hello,

    Je n'ai jamais eu ce besoin donc je reconnais très humblement que je ne pourrais t'aider plus en détail.

    Je t'ai indiqué la classe Stream car je sais que ça doit être possible. Et si non, c'est certainement possible avec une classe dérivée comme celle que tu utilises (peut-être).

    Fais une recherche sur le forum pour voir si le sujet a déjà été traité. Sinon, Google reste ton meilleur allié je pense (en faisant la recherche en anglais, t'auras plus de résultats).

  5. #5
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Que tu veuilles lire un fichier de 500Mo d'un coup, où que tu veuilles le stocker (en même temps) dans X variables, ne change rien au problème : Il faudra avoir le luxe d'avoir 500Mo de RAM sur le PC qui fera l'opération...

    Éventuellement, tu pourrais lire et écrire au fur et à mesure (par tranche de 100Mo)... tout dépend de ce que tu veux faire.
    D'où ma question : Que souhaites tu faire réellement avec le contenu du fichier ?

Discussions similaires

  1. [WD-2007] Comment lire fichier date files (.dat) ?
    Par boubas53 dans le forum Word
    Réponses: 2
    Dernier message: 13/09/2014, 13h16
  2. Comment lire un flux en streaming
    Par Djobird dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 22/06/2009, 10h39
  3. Comment lire un jar file dans javascript ?
    Par Battosaiii dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/10/2006, 13h23
  4. Réponses: 2
    Dernier message: 06/12/2002, 07h50
  5. Réponses: 5
    Dernier message: 20/08/2002, 18h01

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