打开本地文件夹读取文件信息

文章描述了一个Windows应用程序中的功能,包括打开本地文件夹进行文件对比,筛选DLL和EXE文件,以及导出Excel并复制不同版本的文件。方法涉及使用FolderBrowserDialog、DirectoryInfo和FileVersionInfo类进行文件操作。
摘要由CSDN通过智能技术生成

        /// <summary>
        /// 打开本地对比文件夹路径
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnOpenPath_Click(object sender, EventArgs e)
        {       
            System.Windows.Forms.FolderBrowserDialog dialog = new FolderBrowserDialog();
            dialog.Description = "请选择要对比的本地客户端所在的文件夹";
            this.btnOpenPath.Text = "对比中...";
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                DataTable dtselect = new DataTable();
                string path = dialog.SelectedPath;
                DirectoryInfo root = new DirectoryInfo(path);
                System.IO.FileInfo[] files = root.GetFiles("*.*", SearchOption.AllDirectories);
                //progressBar1.Maximum = files.Length;
                FormComparClientResult frm = new FormComparClientResult();
                frm.FilePath = path;
                // 使用 DataView 进行排序
                DataView dataView = dtFileUpload.DefaultView;
                dataView.RowFilter = "IS_CURVERSION=1";
                dataView.Sort = "FILE_NAME ASC"; // 升序排序

                frm.Hospitalfiles = dataView.ToTable();
                DataTable dtLocal = dtFileUpload.Clone();
                for (int i = 0; i < files.Length; i++)
                {
                    System.IO.FileInfo file = files[i];

                    //progressBar1.Value = i;
                    string extension = Path.GetExtension(file.FullName);
                    if (extension.ToLower() == ".dll" || extension.ToLower() == ".exe")
                    {
                        DataRow dr = dtLocal.NewRow();
                        dr["FILE_NAME"] = file.Name;
                        dr["VERSION_NAME"] = FileVersionInfo.GetVersionInfo(file.FullName).FileVersion;
                        dr["UPLOAD_DATE"] = file.LastWriteTime;
                        dr["LAST_UPDATE"] = file.LastWriteTime;
                        if (files[i].FullName.ToLower().Contains("widll"))
                        {
                            dr["PATH"] = @"\widll\";
                        }
                        else
                        {
                            dr["PATH"] = @"\";
                        }
                        dtLocal.Rows.Add(dr);
                    }
                }
                DataView dataViewLocal = dtLocal.DefaultView;
                dataViewLocal.Sort = "FILE_NAME ASC"; // 升序排序
                frm.Selectedfiles = dataViewLocal.ToTable();
                this.btnOpenPath.Text = "选择客户端";
                frm.ShowDialog();
            }
        }

    /// <summary>
        /// 导出对比excel,和复制对比结果不同的dll
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnExportExcel_Click(object sender, EventArgs e)
        {
            DataTable dtselefile = selectedfiles.Copy();
            DataView dvselefile = dtselefile.DefaultView;
            dvselefile.RowFilter = "STATUS<>'0'";
            dtselefile = dvselefile.ToTable();
            DirectoryInfo root = new DirectoryInfo(filePath);
            System.IO.FileInfo[] files = root.GetFiles("*.*", SearchOption.AllDirectories);
            for (int i = 0; i < files.Length; i++)
            {
                if (dtselefile.Select($"FILE_NAME='{files[i].Name}'").Length > 0)
                {
                    string strDes = files[i].FullName.ToLower().Contains("widget") ? "\\COPY\\widget" : "\\COPY";
                    CopyToFile(files[i].FullName, filePath + "\\COPY");
                }
            }

            ExportExcel(gridControlLocal);
        }

        /// <summary>
        /// 拷贝文件到另一个文件夹下
        /// </summary>
        /// <param name="sourceName">源文件路径</param>
        /// <param name="folderPath">目标路径(目标文件夹)</param>
        public void CopyToFile(string sourceName, string folderPath)
        {
            //例子:
            //源文件路径
            //string sourceName = @"D:\Source\Test.txt";
            //目标路径:项目下的NewTest文件夹,(如果没有就创建该文件夹)
            //string folderPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "NewTest");

            if (!Directory.Exists(folderPath))
            {
                Directory.CreateDirectory(folderPath);
            }

            //当前文件如果不用新的文件名,那么就用原文件文件名
            string fileName = Path.GetFileName(sourceName);
            //这里可以给文件换个新名字,如下:
            //string fileName = string.Format("{0}.{1}", "newFileText", "txt");

            //目标整体路径
            string targetPath = Path.Combine(folderPath, fileName);

            //Copy到新文件下
            FileInfo file = new FileInfo(sourceName);
            if (file.Exists)
            {
                //true 为覆盖已存在的同名文件,false 为不覆盖
                FileInfo fileCopy = new FileInfo(targetPath);
                if (!fileCopy.Exists)
                {
                    file.CopyTo(targetPath, false);
                }
            }
        }
 

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值