我正在尝试从winform应用程序解压缩文件。 我正在使用此代码:
string dezarhiverPath = @AppDomain.CurrentDomain.BaseDirectory + "\\7z.exe";
ProcessStartInfo pro = new ProcessStartInfo();
pro.WindowStyle = ProcessWindowStyle.Hidden;
pro.FileName = dezarhiverPath;
pro.Arguments = @" e c:\TEST.ZIP";
Process x = Process.Start(pro);
x.WaitForExit();
代码不会返回错误但不会返回任何错误。 我也从cmd:
尝试了这个命令K:\>"C:\Test\7z.exe" e "c:\TEST.ZIP"
但是在cmd中,我收到以下错误消息:
7-Zip cannot find the code that works with archives.
有人可以帮我从c#中解压缩一些文件吗?
谢谢!
答案 0 :(得分:6)
为什么你会在外部尝试使用7z.exe应用程序呢?这是一种非常有用的方式。而是使用众多库中的一个。
如果这是一个新应用程序,并且您的目标是.NET 4.5,则新的System.IO.Compression
命名空间具有ZipFile
类。
或者,SharpZipLib
是用于.NET中文件压缩的GPL库。有online samples。
同样可用的是DotNetZip,即Ms-PL许可。
答案 1 :(得分:0)
请参阅以下代码:
using System.IO.Compression;
string startPath = @"c:\example\start";
string zipPath = @"c:\example\result.zip";
string extractPath = @"c:\example\extract";
ZipFile.CreateFromDirectory(startPath, zipPath);
ZipFile.ExtractToDirectory(zipPath, extractPath);
参与链接:
答案 2 :(得分:0)
您可以使用SevenZipSharp库
using (var input = File.OpenRead(lstFiles[0]))
{
using (var ds = new SevenZipExtractor(input))
{
//ds.ExtractionFinished += DsOnExtractionFinished;
var mem = new MemoryStream();
ds.ExtractFile(0, mem);
using (var sr = new StreamReader(mem))
{
var iCount = 0;
String line;
mem.Position = 0;
while ((line = sr.ReadLine()) != null && iCount < 100)
{
iCount++;
LstOutput.Items.Add(line);
}
}
}
}
答案 3 :(得分:0)
试试这个
string fileZip = @"c:\example\result.zip";
string fileZipPathExtactx= @"c:\example\";
ProcessStartInfo p = new ProcessStartInfo();
p.WindowStyle = ProcessWindowStyle.Hidden;
p.FileName = dezarhiverPath ;
p.Arguments = "x \"" + fileZip + "\" -o" + fileZipPathExtact;
Process x = Process.Start(p);
x.WaitForExit();
答案 4 :(得分:0)
嘿,请使用下面的代码,您的系统中必须有7zip应用程序。
public void ExtractFile(string source, string destination)
{
string zPath = @"C:\Program Files\7-Zip\7zG.exe";// change the path and give yours
try
{
ProcessStartInfo pro = new ProcessStartInfo();
pro.WindowStyle = ProcessWindowStyle.Hidden;
pro.FileName = zPath;
pro.Arguments = "x \"" + source + "\" -o" + destination;
Process x = Process.Start(pro);
x.WaitForExit();
}
catch (System.Exception Ex) {
//DO logic here
}
}
创建:
public void CreateZip()
{
string sourceName = @"d:\a\example.txt";
string targetName = @"d:\a\123.zip";
ProcessStartInfo p = new ProcessStartInfo();
p.FileName = @"C:\Program Files\7-Zip\7zG.exe";
p.Arguments = "a -tgzip \"" + targetName + "\" \"" + sourceName + "\" -mx=9";
p.WindowStyle = ProcessWindowStyle.Hidden;
Process x = Process.Start(p);
x.WaitForExit();
}
答案 5 :(得分:0)
这也许可以帮助您。
//You must create an empty folder to remove.
string tempDirectoryPath = @"C:\Users\HOPE\Desktop\Test Folder\zipfolder";
string zipFilePath = @"C:\Users\HOPE\Desktop\7za920.zip";
Directory.CreateDirectory(tempDirectoryPath);
ZipFile.ExtractToDirectory(zipFilePath, tempDirectoryPath);