C#:SevenZipSharp使用7z.dll来进行压缩与解压缩

源程序及演示程序下载地址: 【北方网通】    【电信网通】

【下载说明】

1 点击上面的地址,打开下载页面

2 点击"普通下载"--等待30秒--点击"下载"按钮--保存

程序运行截图如下:

C#:SevenZipSharp使用7z.dll来进行压缩与解压缩_第1张图片

使用7z.dll来解压文件

C#:SevenZipSharp使用7z.dll来进行压缩与解压缩_第2张图片

选择解压到何处

C#:SevenZipSharp使用7z.dll来进行压缩与解压缩_第3张图片

解压完毕。

C#:SevenZipSharp使用7z.dll来进行压缩与解压缩_第4张图片

添加需要压缩的文件

C#:SevenZipSharp使用7z.dll来进行压缩与解压缩_第5张图片

选择保存路径

C#:SevenZipSharp使用7z.dll来进行压缩与解压缩_第6张图片

压缩完毕的提示。


主要源程序:

/*
 * Created by SharpDevelop.
 * User: Administrator
 * Date: 2012/10/29
 * Time: 16:13
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

using SevenZip;
using SevenZipSharp;

namespace SevenZipSharp
{
	/// <summary>
	/// Description of MainForm.
	/// </summary>
	public partial class MainForm : Form
	{
		SevenZip.SevenZipExtractor extractor = null;
		SevenZipCompressor compressor = new SevenZipCompressor();
		
		public MainForm()
		{
			//
			// The InitializeComponent() call is required for Windows Forms designer support.
			//
			InitializeComponent();
			
			//
			// TODO: Add constructor code after the InitializeComponent() call.
			//
			this.label1.Text = "Please choose a archive to extract at first.";
			this.label5.Text = "0";
			this.label2.Text = "";
			this.label3.Text = "";
			this.listBox1.Items.Clear();
			this.listBox2.Items.Clear();
		}
		
		void ShowException(string msg){
			MessageBox.Show(msg,"Exception!",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
		}
		
		void ShowInformation(string msg){
			MessageBox.Show(msg,"Information!",MessageBoxButtons.OK,MessageBoxIcon.Information);
		}
		
		void BtnBrowseCompressedFileClick(object sender, EventArgs e)
		{
			try{
				OpenFileDialog ofd = new OpenFileDialog();
				ofd.Filter = "ZIP File(*.zip)|*.zip|RAR File(*.rar)|*.rar";
				if(ofd.ShowDialog() == DialogResult.OK){
					string archiveFullName = ofd.FileName;
					extractor = new SevenZipExtractor(archiveFullName);
					extractor.ExtractionFinished += delegate {
						this.label1.Text = "Extraction Finished.";
					};
					extractor.Extracting += delegate {
						this.label1.Text = "Extracting, please wait...";
					};
					extractor.FileExtractionStarted += delegate {
						this.label1.Text = "Start extracting...";
					};
					
					this.label5.Text = extractor.FilesCount.ToString();
					this.label2.Text = extractor.PackedSize.ToString() + " bytes";
					this.listBox1.Items.Clear();
					foreach(string fileName in extractor.ArchiveFileNames){
						this.listBox1.Items.Add(fileName);
					}
				}
			}catch(Exception ex){
				ShowException(ex.Message);
			}
		}
		
		void BtnExtractClick(object sender, EventArgs e)
		{
			try{
				FolderBrowserDialog fbd = new FolderBrowserDialog();
				if(fbd.ShowDialog() == DialogResult.OK){
					extractor.ExtractArchive(fbd.SelectedPath);
				}
				extractor.Dispose();
				extractor = null;
			}catch(Exception ex){
				ShowException(ex.Message);
			}
		}
		
		void MainFormFormClosing(object sender, FormClosingEventArgs e)
		{
			if(extractor != null)
				extractor.Dispose();
		}
		
		void BtnAddFileClick(object sender, EventArgs e)
		{
			try{
				OpenFileDialog ofd = new OpenFileDialog();
				ofd.Filter= "All Files(*.*)|*.*";
				if(ofd.ShowDialog() == DialogResult.OK){
					this.listBox2.Items.Add(ofd.FileName);
				}
			}catch(Exception ex){
				ShowException(ex.Message);
			}
		}
		
		void BtnRemoveFileClick(object sender, EventArgs e)
		{
			try{
				if(this.listBox2.SelectedItem != null){
					int index = this.listBox2.SelectedIndex;
					this.listBox2.Items.RemoveAt(index);
				}
			}catch(Exception ex){
				ShowException(ex.Message);
			}
		}
		
		void BtnCompressClick(object sender, EventArgs e)
		{
			try{
				string archiveName = string.Empty;
				SaveFileDialog sfd = new SaveFileDialog();
				sfd.Filter = "ZIP File(*.zip)|*.zip|RAR File(*.rar)|*.rar";
				if( sfd.ShowDialog() == DialogResult.OK){
					archiveName = sfd.FileName;
					
					string[] fileFullNames = new string[this.listBox2.Items.Count];
					int i = 0;
					foreach(object o in this.listBox2.Items){
						fileFullNames[i++] = o.ToString();
					}
					
					compressor.FileCompressionStarted += delegate { 
						this.label3.Text = "Start compressing...";
					};
					compressor.FileCompressionFinished += delegate { 
						this.label3.Text = "Finish compressing.";
					};
					compressor.CompressFiles(archiveName,fileFullNames);
					ShowInformation("Compressiong Finished!");
				}
			}catch(Exception ex){
				ShowException(ex.Message);
			}
		}
	}
}



【更多阅读】
  1. [原]C#实现将文本转换为图片
  2. [译]C# DirectShow编程手册及实例
  3. [原]Freeplot: MATLAB来帮你手动画图
  4. [原]Windows 7下用Android手机实现DLNA共享
  5. [译]C#检测程序是否已经运行并置顶
  6. [原]C#用firefox3.6下载yunfile的文件
  7. [原]Android NDK开发环境的搭建,无需Cygwin
  8. [原]Html2Pdf:C调用wkhtmltopdf的API来将Html转换为pdf文件
  9. [译]TIOBE 2012年10月份编程语言排行榜
  10. [原]pjCLibs:方便C语言编程而作的函数库

你可能感兴趣的:(C#:SevenZipSharp使用7z.dll来进行压缩与解压缩)