Je lis depuis peu de temps sur GZipStream
et sa méthode Write
. Ce que je tente de faire est de convertir les données compressées du flux et le mettre dans un tableau d'octets. Je vais vous laisser avec mon code ci-dessous car je crois que cela va aider de manière significative.GZipStream.Write Méthode
public static void Compress(byte[] fi)
{
using (MemoryStream inFile = new MemoryStream(fi))
using (FileStream outFile = File.Create(@"C:\Compressed.exe"))
using (GZipStream Compress = new GZipStream(outFile, CompressionMode.Compress))
{
inFile.CopyTo(Compress);
}
}
Plutôt que d'écrire un fichier sur mon disque, je voudrais écrire les données compressées sur un tableau d'octets, puis retourner le tableau d'octets (en supposant que je fait cette fonction bien sûr).
Je viens en fait à travers une légère erreur lors de l'utilisation du MemoryStream. Mon ancienne version a produit un fichier compressé de 2,62 Ko, mais lors de l'utilisation du flux mémoire, la version compressée est de 2,61 Ko. Quand je décompresse le fichier, le résultat est cassé (ne fonctionnera pas). Aucune suggestion? –
@Evan, vous avez raison. Il semble que 'GZipStream' écrit des informations finales dans le flux quand il est en train de se défaire, donc vous devez d'abord le jeter et ensuite seulement retourner le résultat. Voir la mise à jour – svick
OH MY GOSH - ça marche! Je dois demander ... comment avez-vous trouvé cette information ... J'ai passé près de 2 heures à essayer de faire ce travail maintenant! Quel sentiment génial - si proche. Merci beaucoup –