C# 用户选择单个压缩-系统自带压缩
程序员文章站
2024-01-30 10:11:04
//用C#自带的压缩,最少要.net4.5或以上,先增加引用 System.IO.Compression.FileSystem // FolderBrowserDialog dlg = new FolderBrowserDialog(); //压缩目录 显示一个标准选择文件夹对话框 OpenFile ......
//用c#自带的压缩,最少要.net4.5或以上,先增加引用 system.io.compression.filesystem
// folderbrowserdialog dlg = new folderbrowserdialog(); //压缩目录------显示一个标准选择文件夹对话框
openfiledialog dlg = new openfiledialog(); //显示一个标准选择文件对话框
dialogresult result = dlg.showdialog(); //返回对话框的值 选择值
if (result==dialogresult.ok) //如果用户在对话框选择了文件夹或文件
{
string zippath = system.io.path.getdirectoryname(dlg.filename); //返回指定的路径
string abc = zippath + "\\"+system.io.path.getfilenamewithoutextension(dlg.filename); //abc=于当前目录+文件名(不包含扩展号)
system.io.directory.createdirectory(abc); //创建临时文件夹
system.io.file.copy(dlg.filename, abc + "\\" + dlg.safefilename); //复制选择的文件
system.io.compression.zipfile.createfromdirectory(abc, abc + ".zip"); //压 缩文件到用户选择文件的目录里
deletefolder( abc); //删除临时文件夹
system.diagnostics.process.start("explorer.exe", zippath); // 启动由包含进程启动信息
void deletefolder(string dir) //创建删除文件夹和里面的文件的方法
{
if (system.io.directory.exists(dir)) //如果存在这个文件夹删除之
{
foreach (string d in system.io.directory.getfilesystementries(dir))
{
if (system.io.file.exists(d))
system.io.file.delete(d); //直接删除其中的文件
else
deletefolder(d); //递归删除子文件夹
}
system.io.directory.delete(dir); //删除已空文件夹
messagebox.show(dir + " 文件夹删除成功");
}
else
messagebox.show(dir + " 该文件夹不存在"); //如果文件夹不存在则提示
}
下一篇: 解决多线程复杂问题的一个方法