打开单一文件及文件夹的代码记录(C#版本)

在公司进行项目准备练习的过程中,涉及到了基础操作--读取文件。由于本人很久没弄过C#的文件读取了,因此基本操作存在手生的情况,所以还是针对打开单一文件及文件夹文件的方法进行简单汇总。


首先要明白,读取文件和打开文件是两回事,因为读取文件是读取文件中的每一行数据,这个需要用到文本流的内容(即StreamReaderStreamWriter )。如果仅是打开文件和文件夹那么就是要动态获取文件路径,本文总结的就是这种情况。

目录

1.打开单一文件

2.打开文件整个文件目录

3.总结:


1.打开单一文件

 简单版本:FileName就是文件地址了

private void btnOpenFile_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                //加载文件
                objLine=LoadTxtFile(dlg.FileName.ToString());
                MessageBox.Show("文件读取成功");
            }
            else
            {
                return;
            }
        }

 进一步改进允许一次选择多个文件,当然你可以用数组存储也可以用集合存储。


        /// <summary>
        /// 打开文件,可选择多个文件
        /// </summary>
        /// <param name="fileExt">输入文件尾缀名,不包含"."</param>
        /// <returns></returns>
        public static string[] OpenFiles(string fileExt)
        {
            OpenFileDialog dialog = new OpenFileDialog();
            dialog.Multiselect = true;//允许打开多个文件
            dialog.DefaultExt = fileExt;//打开文件时显示的可选文件类型
            dialog.Filter = fileExt + "xlsx文件|" + "*." + fileExt+"|xls文件|*.xls";//打开多个文件
            if (dialog.ShowDialog() == DialogResult.OK)
                return dialog.FileNames;
            else
            {
                MessageBox.Show("返回文件路径失败");
                return null;
            }
        }

2.打开文件整个文件目录

打开整个目录要用到FolderBrowserDialog类,具体使用可以参考微软文档:

FolderBrowserDialog 类 (System.Windows.Forms) | Microsoft Docs

这里只给出简单使用:

   private void btnWd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            //打开选择的文件夹
            FolderBrowserDialog objFoldDialog = new FolderBrowserDialog();
            if (objFoldDialog.ShowDialog() == DialogResult.OK)
            {
                DialogResult obj = MessageBox.Show("当前选择路径\r\n"+ objFoldDialog.SelectedPath, "请选择【纬地数据】文件夹",MessageBoxButtons.YesNo,MessageBoxIcon.Information);
                if (obj == DialogResult.Yes)
                {
                    //读取目录的全部文件
                    getPath(objFoldDialog.SelectedPath);
                }
                else
                {
                    return;
                }
            }
        }

方法getPath: 我定义了一个list集合进行存储:

      //定义集合用来存放读取的全部路径
        public static List<string> list = new List<string>();

  /// <summary>
        /// 读取某一文件夹下所有的文件及文件夹
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        public void getPath(string path)
        {
            DirectoryInfo dir = new DirectoryInfo(path);
            //返回当前目录的文件列表
            FileInfo[] files = dir.GetFiles();
            //返回当前目录的子目录
            DirectoryInfo[] diis = dir.GetDirectories();
            //集合放东西前先清空
            list.Clear();
            //将所有文件添加到集合中
            foreach (FileInfo file in files)
            {
                list.Add(file.FullName);
            }
            //递归将所有子文件夹内文件放到集合中
            foreach (DirectoryInfo dii in diis)
            {
                getPath(dii.FullName);
            }
        }

注意:由于文件夹中还可能会嵌套文件夹,因此这种工作递归最为适合。

3.总结:

读取文件在桌面级应用中十分常见,因此还是记录下,方便下次寻找,后面会进一步总结以前写过的文件流的读取方式。另外还是希望大佬们有好的建议及时留言。

上一篇:UI界面和组件(四)


下一篇:MFC错误 error RC2108: expected numerical dialog constant