2016-10-11 80 views
-3

我有.zip压缩文件,其中只包含一个文件 - 一个文本文件。在我的WinForm内,我想打开.zip文件,选择现有的文本文件。 文本文件应显示ListView,这是我的代码现在:如何从.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; 
     } 
     // 
    } 
+0

http://stackoverflow.com/questions/3238173/how-to-extract-a-rar-file-in-c,http://stackoverflow.com/questions/1025863/read-content-of-rar -files-using-c-sharp – CodeCaster

+0

@CodeCaster O_O – komra23

+0

您需要暂时提取文本文件以读取其内容。可以使用WinRaR来执行此操作,也可以使用.NET的ZIP/RAR库。如果您只需要该文件的名称,则需要一个可以枚举存档内容的库。 – jAC

回答

0

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

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

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

EntriescollectionZipFile.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事件,你是好去。

相关问题