C#呼叫7z實現檔案的壓縮與解壓
阿新 • • 發佈:2020-12-07
1.關於7z
首先在這裡先介紹一下7z壓縮軟體,7z是一種主流的 壓縮格式,它擁有極高的壓縮比。在電腦科學中,7z是一種可以使用多種壓縮演算法進行資料壓縮的檔案格式。主要有以下特點:
- 來源且模組化的元件結構
- 最高的壓縮比
- 強大的AES-256加密
- 可更改配置的壓縮演算法
- 支援操大檔案
- 支援多執行緒壓縮
- 具有多種壓縮檔案格式
2.解壓縮實現程式碼
實現對檔案的解壓縮方法是通過cmd命令,呼叫7z程式通過cmd命令實現對檔案進行解壓和壓縮的操作,具體實現程式碼如下:
- 壓縮程式碼
壓縮的cmd命令:"7Z a -tzip " + zipPath + " " + filePath;
public ExecutionResult CompressFile(string filePath,string zipPath)//執行DOS命令 { ExecutionResult exeRes = new ExecutionResult(); exeRes.Status = true; try { Process process = new Process(); process.StartInfo.FileName = "cmd.exe"; string message = ""; string command1 = "c:"; string command2 = @"cd\"; string command3 = @"cd C:\Progra~1\7-Zip"; string command4 = ""; command4 = "7Z a -tzip " + zipPath + " " + filePath; process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardInput = true; process.StartInfo.RedirectStandardOutput = true; process.StartInfo.RedirectStandardError = true; process.StartInfo.CreateNoWindow = true; process.Start(); process.StandardInput.WriteLine(command1); process.StandardInput.WriteLine(command2); process.StandardInput.WriteLine(command3); process.StandardInput.WriteLine(command4); process.StandardInput.WriteLine("exit"); message = process.StandardOutput.ReadToEnd(); //要等壓縮完成後才可以來抓取這個壓縮檔案 process.Close(); if (!message.Contains("Everything is Ok")) { exeRes.Status = false; exeRes.Message = message; } else { exeRes.Anything = zipPath; } } catch (Exception ex) { exeRes.Message = ex.Message; } return exeRes; }
- 解壓程式碼
解壓的cmd命令:"7Z x -tzip " + zipPath + " -o" + filePath + " -y";
public ExecutionResult DeCompressFile( string zipPath,string filePath)//執行DOS命令 { ExecutionResult exeRes = new ExecutionResult(); exeRes.Status = true; try { Process process = new Process(); process.StartInfo.FileName = "cmd.exe"; string message = ""; string command1 = "c:"; string command2 = @"cd\"; string command3 = @"cd C:\Progra~1\7-Zip"; string command4 = ""; command4 = "7Z x -tzip " + zipPath + " -o" + filePath + " -y"; process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardInput = true; process.StartInfo.RedirectStandardOutput = true; process.StartInfo.RedirectStandardError = true; process.StartInfo.CreateNoWindow = true; process.Start(); process.StandardInput.WriteLine(command1); process.StandardInput.WriteLine(command2); process.StandardInput.WriteLine(command3); process.StandardInput.WriteLine(command4); process.StandardInput.WriteLine("exit"); //process.WaitForExit(); message = process.StandardOutput.ReadToEnd();//要等壓縮完成後才可以來抓取這個壓縮檔案 process.Close(); if (!message.Contains("Everything is Ok")) { exeRes.Status = false; exeRes.Message = message; } else { exeRes.Anything = filePath; } } catch (Exception ex) { exeRes.Message = ex.Message; } return exeRes; }
以上就是C#呼叫7z實現檔案的壓縮與解壓的詳細內容,更多關於c# 檔案壓縮與解壓的資料請關注我們其它相關文章!