Frage
ich versuchen GZipStream zu verwenden, um eine gz-Datei # mit c zu erstellen.
mein Problem ist, dass ich eine Liste haben, die Strings enthält. und ich brauche eine passwortgeschützte ZIP-Datei zu erstellen, und setzen Sie in eine Textdatei, die Zeichenketten enthalten.
Ich will nicht die Text-Datei erstellen, zip es dann, und dann die Textdatei löschen. Ich möchte direkt ein Passwort geschützt Zip-Datei erstellen, die die Textdatei enthält.
irgendeine Hilfe?
EDIT: i mit den Zippen Sachen fertig bin. jetzt brauche ich für die erstellte ZIP-Datei einen Pass zu setzen. jede mögliche Hilfe?
Lösung
Sie sollten mit berücksichtigen SharpZipLib . Es ist eine Open-Source .net Kompressions-Bibliothek. Es enthält Beispiele, wie entweder eine .gz
oder eine .zip
Datei zu erstellen. Beachten Sie, dass Sie direkt in der ZIP-Datei schreiben kann. Sie müssen nicht zuerst eine Zwischendatei auf der Festplatte erstellen müssen.
Edit: (als Antwort auf Ihre edit) SharpZipLib unterstützt zip auch Passwörter
.Andere Tipps
Erstellen Sie einfach eine StreamWriter
Einwickeln Ihre GZipStream
und schreiben Text zu.
kann GZipStream verwendet werden, um eine .gz-Datei zu erstellen, aber das ist nicht das gleiche wie eine ZIP-Datei.
Für kennwortgeschützte Zip-Dateien erstellen, ich glaube, Sie zu einer Drittanbieter-Bibliothek gehen.
Hier ist, wie es zu tun mit DotNetZip ...
var sb = new System.Text.StringBuilder();
sb.Append("This is the text file...");
foreach (var item in listOfStrings)
sb.Append(item);
// sb now contains all the content that will be placed into
// the text file entry inside the zip.
using (var zip = new Ionic.Zip.ZipFile())
{
// set the password on the zip (implicitly enables encryption)
zip.Password = "Whatever.You.Like!!";
// optional: select strong encryption
zip.Encryption = Ionic.Zip.EncryptionAlgorithm.WinZipAes256;
// add an entry to the zip, specify a name, specify string content
zip.AddEntry("NameOfFile.txt", sb.ToString());
// save the file
zip.Save("MyFile.zip");
}