因此,我有一小段代碼可以檢測文件夾中的文件,並在它們變成特定時間後系統地將其壓縮。我現在正在編寫一段代碼,以根據用戶請求解壓縮某個日期範圍的文件以供軟件使用。在C#中通過Winzip解壓縮文件及其cmd擴展
我的問題是命令行字符串壓縮文件效果很好,但unzip不...下面是代碼片段摘要顯示我如何解壓,請讓我知道我應該採取什麼不同的方式來確保解壓縮。謝謝!
private void UnZipFile()
{
if (myRecord == null)
{
if (File.Exists(zipInfo.FullName))
{
Process LogUnzipper = new Process();
//32-bit system
if (File.Exists("c:\\Program Files\\WinZip\\WZZIP.exe"))
{
//WZZIP.exe being the WinZip executable
LogUnzipper.StartInfo.FileName = "c:\\Program Files\\WinZip\\WZZIP.exe";
}
//64-bit system
else if (File.Exists("c:\\Program Files (x86)\\WinZip\\WZZIP.exe"))
{
//WZZIP.exe being the WinZip executable
LogUnzipper.StartInfo.FileName = "c:\\Program Files (x86)\\WinZip\\WZZIP.exe";
}
//here is where I think I'm screwing up something..
string action = "-e " + "\"" + zipInfo.FullName + "\"" + " \"" + zipInfo.DirectoryName + "\"";
//happen in background
LogUnzipper.StartInfo.CreateNoWindow = true;
LogUnzipper.StartInfo.UseShellExecute = false;
LogUnzipper.StartInfo.Arguments = action;
LogUnzipper.Start();
while (!LogUnzipper.HasExited)
{
LogUnzipper.WaitForExit(500);// 1/2 sec
}
//adding break point at this line yields no unzipped Log file :(
}
...
我的想法是,我莫名其妙地調用CMD錯在string action
?即使如果我測試它在正確格式的Windows命令提示符。
***應該注意的是,ZipInfo.FullName是沿着ex:「C:\ Users \ 16208 \ Software \ Beta \ logs \ 6_2013 \ Log_10AM_to_11AM.zip」的東西,就formmat而言,所以我給精確的路徑到壓縮的項目。
使用實際的C#ZIP庫。 – SLaks
如何解釋? – DarthSheldon
@DarthSheldon有多個.NET zip庫,如[DotNetZip](http://dotnetzip.codeplex.com/)和[SharpZipLib](http://www.icsharpcode.net/opensource/sharpziplib/)。這兩個選項都比運行WinZip更好(不僅僅是因爲最終用戶可能沒有安裝WinZip)。 – keyboardP