我有一个问题,我想用7za.exe解压缩一个zip文件,然后我想终止该过程。如果我使用下面的代码,则会遇到在进程解压缩文件之前该进程被杀死的问题。
我已经尝试使用HasExited或WaitForExit,但是没有机会。有人知道吗?唯一的工作方法是使用Thread.Sleep(1000)函数,因为它会使某些其他进程变慢,所以我无法使用它。
System.Diagnostics.ProcessStartInfo zipper = new System.Diagnostics.ProcessStartInfo(@"##archzip.text##");
zipper.Arguments = string.Format("x " + (PathOfFile) + " -o" + (NewPathOfFile) + "");
zipper.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
System.Diagnostics.Process proc = System.Diagnostics.Process.Start(zipper);
proc.Kill();
谢谢!
答案 0 :(得分:0)
您可以尝试下面的代码
using System.IO.Compression;
public static void Decompress(FileInfo fileToDecompress)
{
using (FileStream originalFileStream = fileToDecompress.OpenRead())
{
string currentFileName = fileToDecompress.FullName;
string newFileName = currentFileName.Remove(currentFileName.Length - fileToDecompress.Extension.Length);
using (FileStream decompressedFileStream = File.Create(newFileName))
{
using (GZipStream decompressionStream = new GZipStream(originalFileStream, CompressionMode.Decompress))
{
decompressionStream.CopyTo(decompressedFileStream);
Console.WriteLine("Decompressed: {0}", fileToDecompress.Name);
}
}
}
}
如果要解压缩文件夹,可以使用下面的命令行:
ZipFile.ExtractToDirectory(@"C:\temp\file\9906759_Testpraefix_14028604.zip", @"C:\temp\file\extract\9906759_Testpraefix_14028604");