首页 > 编程笔记 > C#笔记 阅读:28

C#遍历文件夹的3种方法(附带实例)

C#程序中遍历文件夹,可以使用 DirectoryInfo 类提供的 GetDirectories() 方法、GetFiles() 方法和 GetFileSystemInfos() 方法实现,下面分别对这3个方法进行详细讲解。

C# GetDirectories()方法

用来返回当前目录的子目录。该方法为可重载方法,具有以下 3 种重载形式:
public DirectoryInfo[] GetDirectories()
public DirectoryInfo[] GetDirectories(string searchPattern)
public DirectoryInfo[] GetDirectories(string searchPattern, SearchOption searchOption)

C# GetFiles()方法

返回当前目录的文件列表。该方法为可重载方法,具有以下 3 种重载形式:
public FileInfo[] GetFiles()
public FileInfo[] GetFiles(string searchPattern)
public FileInfo[] GetFiles(string searchPattern, SearchOption searchOption)

C# GetFileSystemInfos()方法

检索表示当前目录的文件和子目录的强类型 FileSystemInfo 对象的数组。该方法为可重载方法,具有以下两种重载形式:
public FileSystemInfo[] GetFileSystemInfos()
public FileSystemInfo[] GetFileSystemInfos(string searchPattern)

一般遍历文件夹时都会使用 GetFileSystemInfos() 方法,因为 GetDirectories() 方法只遍历文件夹中的子文件夹,GetFiles() 方法只遍历文件夹中的文件,而 GetFileSystemInfos() 方法遍历文件夹中的所有子文件夹及文件。

【实例】获取文件夹中的所有子文件夹及文件信息。程序开发步骤如下:
1) 新建一个 Windows 应用程序,默认窗体为 Form1.cs。

2) 在 Form1 窗体中,添加一个 FolderBrowserDialog 控件、一个 TextBox 控件、一个 Button 控件和一个 ListView 控件:
双击触发 Button 控件的 Click 事件,在该事件中,首先使用 DirectoryInfo 对象的 GetFileSyste mInfos() 方法获取指定文件夹下所有的子文件夹及文件,然后将获取到的信息显示在 ListView 列表中。代码如下:
private void button1_Click(object sender, EventArgs e)
{
    listView1.Items.Clear();
    if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
    {
        textBox1.Text = folderBrowserDialog1.SelectedPath;
        // 创建 DirectoryInfo 对象
        DirectoryInfo dinfo = new DirectoryInfo(textBox1.Text);
        // 获取指定目录下的所有子目录及文件类型
        FileSystemInfo[] fsinfos = dinfo.GetFileSystemInfos();
        foreach (FileSystemInfo fsinfo in fsinfos)
        {
            if (fsinfo is DirectoryInfo)  // 判断是否是文件夹
            {
                // 使用获取的文件夹名称实例化 DirectoryInfo 对象
                DirectoryInfo dirinfo = new DirectoryInfo(fsinfo.FullName);
                // 为 ListView 控件添加文件夹信息
                listView1.Items.Add(dirinfo.Name);
                listView1.Items[listView1.Items.Count - 1].SubItems.Add(dirinfo.FullName);
                listView1.Items[listView1.Items.Count - 1].SubItems.Add("");
                listView1.Items[listView1.Items.Count - 1].SubItems.Add(dirinfo.CreationTime.ToShortDateString());
            }
            else
            {
                // 使用获取的文件名称实例化 FileInfo 对象
                FileInfo finfo = new FileInfo(fsinfo.FullName);
                // 为 ListView 控件添加文件信息
                listView1.Items.Add(finfo.Name);
                listView1.Items[listView1.Items.Count - 1].SubItems.Add(finfo.FullName);
                listView1.Items[listView1.Items.Count - 1].SubItems.Add(finfo.Length.ToString());
                listView1.Items[listView1.Items.Count - 1].SubItems.Add(finfo.CreationTime.ToShortDateString());
            }
        }
    }
}
运行程序,单击“浏览”按钮,弹出“浏览文件夹”对话框;选择文件夹,单击“确定”按钮,将选择的文件夹中所包含的子文件夹及文件信息显示在 ListView 控件中。

相关文章