遍历文件夹及其子文件夹下的.pdf文件,并解压文件夹下所有的压缩包
2015-03-04 13:58
465 查看
List<PDFPATH> pdfpath = new List<PDFPATH>(); List<string> ziplist = new List<string>(); public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { FolderBrowserDialog dialog = new FolderBrowserDialog(); dialog.Description = "请选择文件路径"; if (dialog.ShowDialog() == DialogResult.OK) { string foldPath = dialog.SelectedPath; ListFilesZIPandRaR(new DirectoryInfo(foldPath)); foreach (string p in ziplist) { UnpackFile(p, p.Substring(0,p.LastIndexOf('\\'))); } ListFilesPDF(new DirectoryInfo(foldPath)); dataGridView1.DataSource = pdfpath; } } /// <summary> /// 获取文件夹及其子文件夹下的所有pdf /// </summary> /// <param name="info"></param> public void ListFilesPDF(FileSystemInfo info) { if (!info.Exists) return; DirectoryInfo dir = info as DirectoryInfo; //不是目录 if (dir == null) return; FileSystemInfo[] files = dir.GetFileSystemInfos(); for (int i = 0; i < files.Length; i++) { FileInfo file = files[i] as FileInfo; //是文件 if (file != null) { //Console.WriteLine(file.FullName + "\t " + file.Length); if (file.FullName.Substring(file.FullName.LastIndexOf(".")) == ".pdf") //此处为显示JPG格式,不加IF可遍历所有格式的文件 { PDFPATH p = new PDFPATH(); p.path = file.FullName; pdfpath.Add(p ); } } //对于子目录,进行递归调用 else { ListFilesPDF(files[i]); } } } /// <summary> /// 获取文件夹及其子文件夹下的所有ZIP,RaR /// </summary> /// <param name="info"></param> public void ListFilesZIPandRaR(FileSystemInfo info) { if (!info.Exists) return; DirectoryInfo dir = info as DirectoryInfo; //不是目录 if (dir == null) return; FileSystemInfo[] files = dir.GetFileSystemInfos(); for (int i = 0; i < files.Length; i++) { FileInfo file = files[i] as FileInfo; //是文件 if (file != null) { //Console.WriteLine(file.FullName + "\t " + file.Length); if (file.FullName.Substring(file.FullName.LastIndexOf(".")) == ".zip" || file.FullName.Substring(file.FullName.LastIndexOf(".")) == ".rar") //此处为显示JPG格式,不加IF可遍历所有格式的文件 { ziplist.Add(file.FullName); } } //对于子目录,进行递归调用 else { ListFilesZIPandRaR(files[i]); } } } #region 解压 文件 zip 格式 rar 格式 /// <summary> ///解压文件 /// </summary> /// <param name="fileFromUnZip">解压前的文件路径(绝对路径)</param> /// <param name="fileToUnZip">解压后的文件目录(绝对路径)</param> public static void UnpackFile(string fileFromUnZip, string fileToUnZip) { //获取压缩类型 string unType = fileFromUnZip.Substring(fileFromUnZip.LastIndexOf(".") + 1, 3).ToLower(); switch (unType) { case "rar": UnRar(fileFromUnZip, fileToUnZip); break; case "zip": UnZip(fileFromUnZip, fileToUnZip); break; } } //解压rar格式的文件 private static void UnRar(string fileFromUnZip, string fileToUnZip) { using (Process Process1 = new Process())// 开启一个进程 执行解压工作 { string ServerDir = @"C:\Program Files (x86)\HaoZip\HaoZip.exe";//rar工具的安装路径 必须要安装 WinRAR //例于:C:\Program Files (x86)\WinRAR\RAR.exe Process1.StartInfo.UseShellExecute = false; Process1.StartInfo.RedirectStandardInput = true; Process1.StartInfo.RedirectStandardOutput = true; Process1.StartInfo.RedirectStandardError = true; Process1.StartInfo.CreateNoWindow = true; Process1.StartInfo.FileName = ServerDir; Process1.StartInfo.Arguments = " x -inul -y " + fileFromUnZip + " " + fileToUnZip; Process1.Start();//解压开始 Process1.WaitForExit(); Process1.Close(); } } // 解压zip 文件 public static void UnZip(string fileFromUnZip, string fileToUnZip) { ZipInputStream inputStream = new ZipInputStream(File.OpenRead(fileFromUnZip)); ZipEntry theEntry; while ((theEntry = inputStream.GetNextEntry()) != null) { fileToUnZip += "/"; string fileName = Path.GetFileName(theEntry.Name); string path = Path.GetDirectoryName(fileToUnZip) + "\\"; // Directory.CreateDirectory(path);//生成解压目录 if (fileName != String.Empty) { FileStream streamWriter = File.Create(path + fileName);//解压文件到指定的目录 int size = 2048; byte[] data = new byte[2048]; while (true) { size = inputStream.Read(data, 0, data.Length); if (size > 0) { streamWriter.Write(data, 0, size); } else { break; } } streamWriter.Close(); } } inputStream.Close(); } #endregion private void Form1_Load(object sender, EventArgs e) { } } public class PDFPATH { public string path { get; set; } }
相关文章推荐
- 非递归遍历指定文件夹下的所有文件及其子文件夹
- 非递归遍历指定文件夹下的所有文件及其子文件夹 [11/29/2010 更新]
- 遍历文件夹及其子文件夹下所有文件
- 遍历文件夹及其子文件夹下所有文件
- c#遍历一个文件夹下的所有文件包括子文件夹(转载)
- 递归方式遍历文件夹下的所有文件及子文件夹 [php]
- asp.net 遍历文件夹(含子文件夹)所有文件
- c++利用windows api遍历指定文件夹及其子文件夹中的文件
- php 获取某个文件夹及其子文件夹的所有文件并支持文件格式的筛选
- c#遍历一个文件夹下的所有文件包括子文件夹
- [原创]Python小工具 —— 计算 文件 或 文件夹及其所有子文件夹中所有文件 的 代码行数
- c#遍历一个文件夹下的所有文件包括子文件夹
- fso遍历文件夹内所有文件和子文件夹
- 遍历指定文件夹下的所有文件(包括子文件夹下)
- BAT遍历所有文件夹及其子文件夹
- C# 获取文件夹及其子文件夹下的所有文件
- asp.net 递归删除文件夹及其子文件夹和所有文件[转]
- c#遍历一个文件夹下的所有文件包括子文件夹(转载)
- PHP遍历文件夹及子文件夹所有文件
- asp.net 遍历文件夹(含子文件夹)所有文件