Créer de nouveaux FileStream d'un tableau d'octets
Je tente de créer un nouvel objet FileStream à partir d'un tableau d'octets. Je suis sûr que cela n'avait aucun sens du tout donc je vais essayer d'expliquer plus en détail ci-dessous.
Les tâches que je fais:
1) Lire le fichier source qui a été précédemment comprimé
2) Décompresser les données à l'aide de GZipStream
3) copier le décompressé données dans un tableau d'octets.
Ce que j'aimerais changer:
1) je voudrais être en mesure d'utiliser le Fichier.ReadAllBytes de lire le décompressé de données.
2) je voudrais créer un nouvel objet filestream usingg ce tableau d'octets.
En bref, je veux le faire toute exploitation à l'aide de tableaux d'octets. Un des paramètres de la GZipStream est un courant de quelque sorte, alors j'ai pensé que j'étais coincé à l'aide d'un filestream. Mais, si une méthode existe où je peux créer une nouvelle instance d'un FileStream à partir d'un tableau d'octets, alors je doit être fine.
Voici ce que j'ai à ce jour:
FolderBrowserDialog fbd = new FolderBrowserDialog(); //Shows a browser dialog
fbd.ShowDialog();
//Path to directory of files to compress and decompress.
string dirpath = fbd.SelectedPath;
DirectoryInfo di = new DirectoryInfo(dirpath);
foreach (FileInfo fi in di.GetFiles())
{
zip.Program.Decompress(fi);
}
//Get the stream of the source file.
using (FileStream inFile = fi.OpenRead())
{
//Create the decompressed file.
string outfile = @"C:\Decompressed.exe";
{
using (GZipStream Decompress = new GZipStream(inFile,
CompressionMode.Decompress))
{
byte[] b = new byte[blen.Length];
Decompress.Read(b,0,b.Length);
File.WriteAllBytes(outfile, b);
}
}
}
Merci pour toute aide!
En ce qui concerne,
Evan
Ce code n'est pas compule (accolade de décalage dans le foreach). Et pendant que vous êtes de l'édition, de la browsedialog des choses est totalement hors de propos.
Pour ce que je fais, cependant, la browsedialog n'est pas pertinent.
OriginalL'auteur | 2011-05-20
Vous devez vous connecter pour publier un commentaire.
Car vous ne savez pas combien d'octets que vous serez de la lecture de la
GZipStream
, vous ne pouvez pas vraiment allouer un tableau. Vous avez besoin de lire tout cela dans un tableau d'octets, et ensuite utiliser un MemoryStream pour décompresser.OriginalL'auteur Jim Mischel
Il semble que vous devez utiliser une MemoryStream.
OriginalL'auteur Charles Lambert
Voici ce que j'ai fait. Je me rends compte que je n'ai pas suffisamment de renseignements dans ma question - et je m'en excuse, mais je sais que la taille du fichier que j'ai besoin de décompresser que j'utilise de plus tôt dans mon programme. Ce tampon est dénommé "blen".
OriginalL'auteur