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 :

Tableau de byte dans un zip [Débutant]


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 20
    Points : 18
    Points
    18
    Par défaut Tableau de byte dans un zip
    Bonjour,

    j'ai besoin de votre aide, j'aimerais pouvoir mettre dans un zip mon tableau de byte et ensuite pouvoir l'extraire pour le réutiliser.

    Je sais déjà comment l'extraire sans passer par un fichier :

    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
    24
    25
    public byte[] DezipByte(string name, string lienZip)
            {
               byte[] tableauByte = null;
                using (var zip = new ZipInputStream(File.OpenRead(lienZip)))
                {
                    using (var filestream = new FileStream(lienZip, FileMode.Open, FileAccess.Read))
                    {
                        ICSharpCode.SharpZipLib.Zip.ZipFile zipfile = new ICSharpCode.SharpZipLib.Zip.ZipFile(filestream);
                        ZipEntry item = zipfile.GetEntry(name);
     
                        if (item != null)
                        {
                            using (StreamReader stream = new StreamReader(zipfile.GetInputStream(item)))
                            {
                                char[] cArray = stream.ReadToEnd().ToCharArray();
                                tableauByte= new byte[cArray.Length];
     
                                for (int i = 0; i < cArray.Length; i++)
                                    tableauByte[i] = (byte)cArray[i];
                            }
                        }
                    }
                }
                return tableauByte;
            }

    J'arrive également à zipper mon tableau de byte :

    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
     public void ZipByte(byte[] Tableau, string name)
            {
                using (FileStream Open= new FileStream(lienZip, FileMode.Open))
                {
                    using (ZipArchive archive = new ZipArchive(Open, ZipArchiveMode.Update))
                    {
                        ZipArchiveEntry entry = archive.GetEntry(name);
                        if (entry != null)
                        {
                            entry.Delete();
                        }
                        ZipArchiveEntry readmeEntry = archive.CreateEntry(name);
                        using (StreamWriter ecriture= new StreamWriter(readmeEntry.Open()))
                        {
                            ecriture.Write(System.Text.ASCIIEncoding.ASCII.GetString(Tableau));
                        }
                    }
                    Open.Close();
                }
            }

    Le problème est que le tableau de byte d'entrée, n'est pas le même que celui de sorti.


    Pouvez vous m'aider ?
    Merci d'avance,

    Bonne journée

  2. #2
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 697
    Points
    10 697
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Je vais poser une question bête, mais pourquoi utiliser des StreamWriter/StreamReader pour manipuler votre tableau de byte ?

    La classe Stream possède déjà ce qu'il faut, et cela évitera des conversions inutiles et consommatrices de ressources pour rien. Cela évitera également d'avoir des soucis lors de la conversion, car d'un côté, lors de l'écriture vous convertissez des bytes en la considérant comme une chaine ASCII, mais aucun encodage n'est spécifié lors de la lecture (et c'est donc de l'UTF8 par défaut). Encodages différents, donc potentiellement résultats différents.

    A ce stade, deux possibilités : ou bien vous spécifiez le même encodage à la lecture et à l'écriture, et cela devrait être bon, ou bien vous passez directement par les méthodes de la classe Stream (recommandé).
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 20
    Points : 18
    Points
    18
    Par défaut
    Bonjour, merci pour votre réponse, je ne connaissais toutes les possibilités de la classe Stream, c'est pour cela que je suis partit sur des StreamWriter et StreamReader.

    Je vais donc partir sur l'utilisation des méthodes de la classe Stream.

    Merci de votre aide

    Bonne journée

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

Discussions similaires

  1. Affichage tableau de byte dans un textbox
    Par douezz dans le forum VB.NET
    Réponses: 3
    Dernier message: 01/06/2011, 14h46
  2. Ecrire et lire un tableau de byte dans un fichier
    Par NutellaPiou dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 08/01/2009, 15h48
  3. Réponses: 1
    Dernier message: 18/01/2007, 17h27
  4. [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
  5. Réponses: 4
    Dernier message: 26/01/2006, 14h37

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