考二建条件解读:用递归方法实现读取文件夹下所有文件信息 - GIS穆拉丁 - 博客园

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 16:02:42

用递归方法实现读取文件夹下所有文件信息

要实现读取文件夹下所有文件信息,其实只要用个递归方法就可以简单实现了

下面为自定义的一个类其中的showEveryFile方法就是为读取给定文件夹下每一个文件

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Windows.Forms;
namespace showFile
{
    class showfileCls
    {
        public static void showErveryFile(string strFolderPath,ListViewlstView)//定义静态的函数
        {
            try
            {
                DirectoryInfo di = new DirectoryInfo(strFolderPath);//把文件夹定义为DirectoryInfo形式
                FileSystemInfo[] fsinfo = di.GetFileSystemInfos();//获取此文件夹中的文件和文件夹的信息,返回一FileSystemInfo格式的数组
                foreach (FileSystemInfo fs in fsinfo)//遍历数组
                {
                    if (fs is FileInfo)//如果遍历到的为一文件
                    {
                        lstView.Items.Add(fs .FullName);
                        lstView.Items[lstView.Items.Count -1].SubItems.Add(fs.Name.Remove (fs.Name .LastIndexOf ('.'),fs.Extension.Length ));
                        lstView.Items[lstView.Items.Count -1].SubItems.Add(fs.Extension );
                        lstView.Items[lstView.Items.Count -1].SubItems.Add(fs.CreationTime.ToShortDateString());
                    }
                    if (fs is DirectoryInfo)//如果遍历到的为文件夹
                    {
                        showErveryFile(fs.FullName, lstView);//递归方法
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message,"友情提示" );
            }
        }
    }
}

定义了这个类之后就可以在按钮的Click事件中添加代码了

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace showFile
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public static bool boolSort = true;//全局的静态变量,用来设置点击列时候的排序方式
        private void Form1_Load(object sender, EventArgs e)
        {
            listView1.View = View.Details;//显示详细信息,这句很重要!!!
            listView1.AllowColumnReorder = true;//允许排列列的顺序
            listView1.FullRowSelect = true;//允许整行选择
            listView1.GridLines = true;//设置网格线
            listView1.Sorting = SortOrder.Ascending;//设置排序为正序排序

            //为列设置属性值
            listView1.Columns.Add("文件路径",100,HorizontalAlignment.Left);
            listView1.Columns.Add("文件名",100, HorizontalAlignment.Left);
            listView1.Columns.Add("文件格式",100, HorizontalAlignment.Left);
            listView1.Columns.Add("创建时间",100, HorizontalAlignment.Left);
        }

        private void btnBrowse_Click(object sender, EventArgs e)
        {
            string strPath = "";//文件路径
            if (folderBrowserDialog1.ShowDialog() ==DialogResult.OK)//如果选择了一路径,并且单击了“确定”按钮
            {
                listView1.Items.Clear();//首先清空列表中的内容
                strPath = folderBrowserDialog1.SelectedPath;//获取选择的文件路径名
                txtPath.Text = strPath;//把文件路径在textbox中显示
                showfileCls.showErveryFile(strPath, listView1);//由于定义的为静态函数,故不用实例化类
            }
        }

        private void listView1_ColumnClick(object sender,ColumnClickEventArgs e)
        {
            boolSort = !boolSort;//对此变量取反,以便每点击一次就按不同的方式排序
            if (boolSort)
            {
                listView1.Sorting = SortOrder.Ascending;//正序
            }
            else
            {
                listView1.Sorting = SortOrder.Descending;//倒序
            }
        }
    }
}
最后的生成效果如图:

由图可知,系统不但显示了MathType文件夹根目录下的文件,还显示了其子文件夹Fonts及孙文件夹PostScript下的文件。

vb怎么样用Dir做到读取文件夹下的全部文件? 如何用ASP读取一个文件夹里面所有文件的名字 vb 怎样读取一个文件夹里面的指定类型的所有文件的名称? 在双硬盘下,用copy目录windows文件夹所有文件能恢复系统吗 求.Net遍历指定文件夹下所有文件的操作方法 有什么方法可以在不联网的情况下读取QQ消息信息呢? 用递归算法实现1-N中任全R个数 写几行代码实现打印出c:\aa文件夹下的所有文件名 DOS下无法读取文件 如何用ASP实现不同目录文件夹复制包括文件下没有文件 如何将一个文件夹及其子文件夹下的所有一类文件复制到另一个文件夹下? 某文件夹下所有文件和子文件夹都不能增删改,如何干掉它? 分别用函数递归和非递归的方法求出两个整数的最大公约数。 分别用函数递归和非递归的方法求两个整数的最大公约数。 请问,Excel文件在SQL SERVER2000里的存储和读取问题!(用VB实现) 所有文件夹变成exe文件 所有文件文件夹不显示 显示所有文件和文件夹 在dos下如何删除指定文件夹(包括其下的所有文件)? 如何使XP系统下所有文件夹下的文件默认以“列表”方式显示? LINUX下如何查看一个文件夹下所有文件的总大小? 如何在显示所有文件下把一个文件夹隐藏?然后只能从DOS下进入, 用递归实现string的逆置,我写的代码可以实现吗? 用递归方法解决整数转换成字符串的问题