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 :

taille du buffer


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mars 2010
    Messages : 366
    Par défaut taille du buffer
    Bonjour
    Je veux mettre un fichier dans un buffer pour savoir sa taille (buffer.Length)
    ça marche trés bien , mais apparemment , quand j'ai des fichiers de grandes tailles ça se bloque
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Dim buffer As Byte() = New Byte(2047) {}
    J'ai pensé à augmenter la taille de 2047 à qq chose de plus grand
    Est ce quil y une méthode pour savoir la taille à mettre pour ne pas tomber dans des cas ou la taille du bueffer est petite?
    Merci

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 99
    Par défaut
    Pourquoi tiens-tu à faire cela ? Sache qu'un FileStream est déjà une array de byte en mémoire. Faire ce que tu veux faire ne servirait qu'à diminuer les performances de ton programme.

  3. #3
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par DeveloppeurWeb Voir le message
    Bonjour
    Je veux mettre un fichier dans un buffer pour savoir sa taille (buffer.Length)
    Comme le dit NokyDaOne, on ne voit pas bien la finalité ici. En effet, si tu veux manipuler un fichier par lecture en mémoire, tu as la classe FileStream qui fait cela très bien.
    Donc quel est le besoin fonctionnel ici qui ne permet pas d'utiliser cette classe ?

    Si c'est juste pour connaitre la taille du fichier, aucun besoin de l'ouvrir, il suffit d'utilser la classe FileInfo qui expose une propriété Length.

    Bref, merci de préciser le besoin.

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mars 2010
    Messages : 366
    Par défaut
    J'accède à mon fichier depuis une URL, donc j'ai fais ce code là pour connaitre la taille du fichier et en plus de l'attacher à un mail
    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
     Dim strFilepath As String
            strFilepath = vURL
            Dim vUri As New Uri(strFilepath)
            Dim myRequest As HttpWebRequest
            myRequest = WebRequest.Create(vUri)
            myRequest.KeepAlive = False
            Dim req As WebRequest
            req = WebRequest.Create(vUri)
            Dim myResponse As WebResponse
            myResponse = req.GetResponse
            Dim fStream As Stream
            fStream = myResponse.GetResponseStream
            Dim memStream As New MemoryStream
            Dim buffer As Byte() = New Byte(2047) {}
            Dim bytesRead As Integer
            bytesRead = 0
            Do
                bytesRead = fStream.Read(buffer, 0, buffer.Length)
                memStream.Write(buffer, 0, bytesRead)
            Loop While (bytesRead <> 0)
            fStream.Close()
            fStream.Dispose()
            buffer = memStream.ToArray

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 99
    Par défaut
    Ha ok tu verux copier des streams. Sachant que l'un est un stream reseau, n'espère pas connaitre sa taille (meme si ya moyen ya des serveurs ou des clients qui disent n'importe quoi, donc on ne peut pas s'y fier)

    par contre quand read te renvoit zero tu peux raisonablement t'arreter
    (ou alors regarde si t'as pas un end of file ou une exception levee)

    je me demande si tu ne ferais pas mieux d'utiliser 4095 à la place de 2047 (mais c'est plus une croyance qu'un savoir)

Discussions similaires

  1. [Sockets] Rendre la taille du buffer infinie ?
    Par Danny Blue dans le forum C#
    Réponses: 2
    Dernier message: 05/07/2008, 19h25
  2. augmentation de la taille du buffer MS SQL Server 2000
    Par lachgar_omar dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 06/12/2007, 21h29
  3. [TCP] Taille de buffer, et fonction send()
    Par phraides dans le forum Développement
    Réponses: 4
    Dernier message: 03/06/2007, 14h45
  4. Réponses: 39
    Dernier message: 27/03/2007, 20h25
  5. sprintf et taille de buffer
    Par koktel_dfr dans le forum C
    Réponses: 30
    Dernier message: 24/03/2007, 01h01

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