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 :

Alternative à file stream ?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de shadowmoon
    Homme Profil pro
    Expert technique et fonctionnel .Net
    Inscrit en
    Mai 2005
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Expert technique et fonctionnel .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 066
    Par défaut Alternative à file stream ?
    Je reprends une application Win Form existante, sous Visual Studio 2010

    Actuellement, au sein d'une fonction, une chaine d'octets est utilisée pour créer un fichier zip via l'utilisation d'un file stream.

    Ce fichier zip est ensuite ouvert et lu pour récupérer des informations qui sont stockés dans une base de données.

    Enfin, le fichier est supprimé.

    Cette chaine d'octets est une des lignes d'un tableau de chaines, passé en paramètre, pouvant atteindre x xxx entrées.

    J'aimerai éviter de créer et supprimer x xxx fichiers, existe-t-il un autre moyen ?


    En complément le code :

    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
     
     
                        for (int index = 0; index < tableau.Length; index++)
                        {
     
                            Byte[] ligne_octets = new Byte[tableau.ligne[index].Length];
     
                           ligne_octets = tableau.ligne[index];
     
                            FileStream fs_fchZip = new FileStream("chemin_fichier", FileMode.Create,FileAccess.Write);
     
                            if (fs_fchZip.CanWrite) fs_fchZip.Write(ligne_octets,0,ligne_octets.Length);
     
                             ...
     
                        }

  2. #2
    Membre éprouvé Avatar de shadowmoon
    Homme Profil pro
    Expert technique et fonctionnel .Net
    Inscrit en
    Mai 2005
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Expert technique et fonctionnel .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 066
    Par défaut
    Bonjour,

    Après quelques recherches, je pense utiliser GZipStream. J'ai modifier le code de cette façon :

    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
     
     
     for (int index = 0; index < tableau.Length; index++)
                        {
     
                            Byte[] fchZip = new Byte[tableau.ligne[index].Length];
     
                           fchZip  = tableau.ligne[index];
     
                            MemoryStream ms_fchZip = new MemoryStream(fchZip,true);
     
                            GZipStream gzp_fchZip = new GZipStream(ms_fchZip, CompressionMode.Decompress);
     
                            Byte[] fchUnZip = new Byte[gzp_fchZip.BaseStream.Length];
     
                            gzp_fchZip.Read(fchUnZip, 0, fchUnZip.Length);
     
                        }
    A ce stade, dans fchUnZip, j'ai une chaine d'octets qui représente mon fichier décompressé ou ai-je mal compris comment GZipStream fonctionne ?

  3. #3
    Membre éprouvé Avatar de shadowmoon
    Homme Profil pro
    Expert technique et fonctionnel .Net
    Inscrit en
    Mai 2005
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Expert technique et fonctionnel .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 066
    Par défaut
    1) les fichiers sont bien des gzip et pas de simple zip donc à priori, ça devrait marcher comme ça.

    2) chaque gzip contient un fichier xml, du coup, j'ai codé de cette façon pour être en mesure de "parcourir" le "fichier" xml via un flux de données :

    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
     
     for (int index = 0; index < tableau.Length; index++)
                        {
     
                            Byte[] fchZip = new Byte[tableau.ligne[index].Length];
     
                           fchZip  = tableau.ligne[index];
     
                            MemoryStream ms_fchZip = new MemoryStream(fchZip,true);
     
                            GZipStream gzp_fchZip = new GZipStream(ms_fchZip, CompressionMode.Decompress);
     
                            Byte[] fchUnZip = new Byte[gzp_fchZip.BaseStream.Length];
     
                            gzp_fchZip.Read(fchUnZip, 0, fchUnZip.Length);
     
                            MemoryStream ms_fchUnZip = new MemoryStream(fchUnZip, true);
     
                             using (XmlReader xmlRdr = XmlReader.Create(ms_fchUnZip))
                             {
     
                              }
                        }
    Est-ce juste ?

    [edit]

    Finalement ça marche, mais pas tel quel, chaque ligne d'octets est cryptée en D.E.S du coup j'ai dû rajouter, encore en plus, CryptoStream

    [/edit]

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 07/03/2014, 12h45
  2. NTFS: lister les Alternate Data Streams
    Par =JBO= dans le forum Contribuez
    Réponses: 0
    Dernier message: 15/11/2013, 21h29
  3. alternative à file:// dans la webView ?
    Par ndoff dans le forum Composants graphiques
    Réponses: 0
    Dernier message: 06/02/2010, 11h32
  4. int getc (FILE * stream)
    Par raphadw dans le forum Bibliothèque standard
    Réponses: 6
    Dernier message: 31/01/2008, 16h20
  5. [Stream] Mettre le contenu d'un File dans un tableau de byte
    Par JohnBlatt dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 25/08/2006, 14h18

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