zoukankan      html  css  js  c++  java
  • 遍历文件夹及其子文件夹下的.pdf文件,并解压文件夹下所有的压缩包

      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 + "	 " + 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 + "	 " + 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)HaoZipHaoZip.exe";//rar工具的安装路径   必须要安装 WinRAR     //例于:C:Program Files (x86)WinRARRAR.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; }
        }
    
  • 相关阅读:
    Microsoft training Kits
    WCF Load Test
    SQL Server Central Management System
    连贯NHibernate 1.0正式发布
    C#全角和半角转换
    Silverlight 2应用所采用的WCF技术
    实用工具特别推荐 Robocopy GUI
    SmtpClient发送邮件遭遇The specified string is not in the form required for a subject.
    SQL Server 2008使用扩展事件进行高级故障排除
    Visual Studio 2010新特性
  • 原文地址:https://www.cnblogs.com/liuruitao/p/4313162.html
Copyright © 2011-2022 走看看