如何从.zip存档获取文件列表并将内容复制到ListView中?

时间:2016-10-11 08:18:08

标签: c#

我的.zip存档只包含一个文件 - 一个文本文件。在我的WinForm中,我想打开.zip文件,点击现有的文本文件。 应显示文本文件ListView,这是我现在的代码:

private void button1_Click(object sender, EventArgs e)
    {
        OpenFileDialog openFileDialog1 = new OpenFileDialog();
        openFileDialog1.Filter = "archieve files (*.zip)|*.zip";
        if (openFileDialog1.ShowDialog() == DialogResult.OK)
        {
            string filename = openFileDialog1.FileName;
            textBox1.Text = filename;
        }
        //
    }

1 个答案:

答案 0 :(得分:1)

正如评论中已经提到的,您可以使用库。

.NET已经有一个用于处理集成到.NET框架中的名为System.IO.Compression.ZipFile的压缩zip存档。请参阅MSDN

使用此命令通过ZipFile.OpenReadZipFile.Entries属性打开.zip文件(只读),以获取存档中的文件信息列表。

Entriescollection ZipFile.ZipArchiveEntry,其中包含一些您可以访问的公共属性。即我们需要的是:

  • 全名
  • LastWriteTime
  • 长度

完整的示例代码:

using (ZipArchive archive = ZipFile.OpenRead(zipPath))
{
     foreach (ZipArchiveEntry entry in archive.Entries)
     {
             if (entry.FullName.EndsWith(".txt", StringComparison.OrdinalIgnoreCase))
             {
                  ListViewItem txtItem = new ListViewItem(entry.FullName);
                  txtItem .SubItems.Add(entry.LastWriteTime);
                  txtItem .SubItems.Add(entry.Length); //Uncompressed size
                  listView.Items.Add(txtItem);
             }
     }
 } 

将此信息放入您的Button_Click活动中,您就可以了。