我尝试使用此代码:
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;
}
答案 0 :(得分:0)
第8行(确保using System.IO;
):
FileStream fs = File.OpenWrite(Path.Combine(@"c:\", NameFile));
szip.ExtractFile(indexZip, fs);
确保您有权写入磁盘C,或更改临时文件夹的路径。
答案 1 :(得分:0)
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);
}
}