Erstellen Sie neue FileStream-aus einem byte-array
Ich bin versucht, erstellen Sie eine neue FileStream-Objekt aus einem byte-array. Ich bin mir sicher, dass machte alles keinen Sinn, so werde ich versuchen zu erklären, im detail weiter unten.
Aufgaben, die ich ausfüllen:
1) Auslesen der Quell-Datei, die war vorher komprimiert
2) Entpacken Sie die Daten mit GZipStream
3) kopieren Sie den dekomprimierten Daten in ein byte-array.
, Was ich ändern möchte:
1) ich möchte in der Lage sein, um die Nutzung Datei.ReadAllBytes zu Lesen, der dekomprimierten Daten.
2) ich möchte dann zum erstellen eines neuen filestream-Objekt usingg dieses byte-array.
Kurz gesagt, ich möchte das gesamte Betriebssystem mit byte-arrays. Einer der Parameter für GZipStream ist ein stream von einer Art, so dass ich dachte, ich steckte Sie ein filestream. Aber, wenn eine Methode vorhanden ist, wo kann ich erstellen eine neue Instanz der FileStream-aus einem byte-array, dann sollte ich in Ordnung sein.
Hier ist was ich habe, so weit:
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);
}
}
}
Vielen Dank für jede Hilfe!!!
Grüße,
Evan
- Es klingt wie MemoryStream könnten Sie nützlich sein.
- Dieser code ist nicht compule (Klammer Diskrepanz in der foreach). Und während Sie bei der Bearbeitung, die browsedialog Zeug ist völlig irrelevant.
- Für das was ich mache, aber die browsedialog ist nicht unerheblich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da Sie nicht wissen, wie viele bytes man Lesen von der
GZipStream
können Sie nicht wirklich zuordnen, die ein array für Sie. Sie müssen es Lesen, alle in ein byte-array und dann mit einem MemoryStream, um Sie zu Dekomprimieren.Es klingt wie Sie benötigen, um ein MemoryStream.
Hier ist, was ich am Ende tun. Ich merke, dass ich nicht geben Sie ausreichend Informationen in meiner Frage - und ich entschuldige mich dafür - aber ich weiß die Größe der Datei, die ich brauche, um zu Dekomprimieren, indem ich es früher in meinem Programm. Dieser Puffer wird auch als "blen".