【问题标题】:How to extract files in my archive one by one using sevenzipsharp如何使用sevenzipsharp一一提取我的存档中的文件
【发布时间】:2014-01-03 07:33:24
【问题描述】:

我尝试使用此代码:

public void Extract(string SourceFile, string password)
{
    SevenZipExtractor szip = new SevenZipExtractor(SourceFile, password);
    foreach (DataGridViewRow row in DGVFile.Rows)
    {
        string NameFile = (string)row.Cells[0].Value;
        int indexZip = szip.ArchiveFileData.IndexOf(NameFile);
        Stream pathDirectory = @"C:\\";
        szip.ExtractFile(indexZip, pathDirectory);
    }
}

但那是错误,在第 7 行和第 8 行。也许任何人都可以解释如何使用在我的 datagridview 中选择的名称以及变量 pathDirectory 中文件流的用途来获取我的存档中的索引文件。 谢谢

编辑: 我使用 DataGridView DGVDekripsi,所以我替换了它。这个正确的代码,它可以工作。

public void Extract(string SourceFile, string password) 
{    
   string OutputLocation = txtOutputDe.Text;
   SevenZipExtractor szip = new SevenZipExtractor(SourceFile, password);
   foreach (DataGridViewRow row in DGVDekripsi.Rows)    
   {
      string NameFile = (string)row.Cells[1].Value;
      FileStream fs = File.OpenWrite(Path.Combine(OutputLocation, NameFile));
      szip.ExtractFile(NameFile, fs );
   }    
   return; 
}

【问题讨论】:

  • 究竟是什么错误?
  • 第 7 行:无法从 'System.Windows.Forms.DataGridViewTextBoxColumn' 转换为 'SevenZip.ArchiveFileInfo'
  • 第 8 行:无法将类型“字符串”隐式转换为“System.IO.Stream”

标签: c# stream extract sevenzipsharp


【解决方案1】:

第 8 行(确保using System.IO;):

FileStream fs = File.OpenWrite(Path.Combine(@"c:\", NameFile));
szip.ExtractFile(indexZip, fs);

确保您有权写入磁盘 C,或更改临时文件夹的路径。

【讨论】:

  • @Roman,那么这里的 indexZip 是什么?不是 int indexZip = szip.ArchiveFileData.IndexOf(NameFile);报错?
【解决方案2】:

IndexOf() 对我不起作用...我喜欢这个解决方案:

using (SevenZipExtractor zip = new SevenZipExtractor(zipFile))
{
   int indexZip = zip.ArchiveFileData.First(archiveFileInfo =>
      archiveFileInfo.FileName.Equals("MyFile.xml")).Index;
   using (FileStream fs = File.OpenWrite(tempFile))
   {
      zip.ExtractFile(indexZip, fs);
   }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    • 2012-07-04
    相关资源
    最近更新 更多