Saya tahu ini adalah utas lama, tetapi saya tidak bisa menghindari memposting beberapa info berguna tentang ini. Saya melihat pertanyaan Zip sering muncul dan ini menjawab hampir semua pertanyaan umum.
Untuk mengatasi masalah kerangka kerja menggunakan 4.5 + ... Mereka adalah kelas ZipStorer yang dibuat oleh jaime-olivares: https://github.com/jaime-olivares/zipstorer , dia juga telah menambahkan contoh bagaimana menggunakan kelas ini sebagai baik dan juga menambahkan contoh bagaimana mencari nama file tertentu juga.
Dan untuk referensi tentang cara menggunakan ini dan melakukan iterasi untuk ekstensi file tertentu sebagai contoh, Anda dapat melakukan ini:
#region
/// <summary>
/// Custom Method - Check if 'string' has '.png' or '.PNG' extension.
/// </summary>
static bool HasPNGExtension(string filename)
{
return Path.GetExtension(filename).Equals(".png", StringComparison.InvariantCultureIgnoreCase)
|| Path.GetExtension(filename).Equals(".PNG", StringComparison.InvariantCultureIgnoreCase);
}
#endregion
private void button1_Click(object sender, EventArgs e)
{
//NOTE: I recommend you add path checking first here, added the below as example ONLY.
string ZIPfileLocationHere = @"C:\Users\Name\Desktop\test.zip";
string EXTRACTIONLocationHere = @"C:\Users\Name\Desktop";
//Opens existing zip file.
ZipStorer zip = ZipStorer.Open(ZIPfileLocationHere, FileAccess.Read);
//Read all directory contents.
List<ZipStorer.ZipFileEntry> dir = zip.ReadCentralDir();
foreach (ZipStorer.ZipFileEntry entry in dir)
{
try
{
//If the files in the zip are "*.png or *.PNG" extract them.
string path = Path.Combine(EXTRACTIONLocationHere, (entry.FilenameInZip));
if (HasPNGExtension(path))
{
//Extract the file.
zip.ExtractFile(entry, path);
}
}
catch (InvalidDataException)
{
MessageBox.Show("Error: The ZIP file is invalid or corrupted");
continue;
}
catch
{
MessageBox.Show("Error: An unknown error ocurred while processing the ZIP file.");
continue;
}
}
zip.Close();
}