C# 文件夹的基本操作(完)

e3eee472155fe5c74eb1438ebdb13cfb.png

上回书说到了判断文件夹是否存在、创建文件夹和移动文件夹。欲知后事如何,且听下面分解。

04   删除文件夹

删除文件夹可以使用 Directory 类的 Delete 方法或者 DirectoryInfo 类的 Delete 方法来实现,下面分别对它们进行介绍。

1.  Directory 类的 Delete 方法

该方法为可重载方法,它有以下两种重载形式:

public static void Delete(string path)

public static void Delete(string path,bool recursive)

path:要移除的空目录/目录的名称。

recursive:若要移除 path 中的目录、子目录和文件,则为 true;否则为 false。

例7

下面的代码调用 Directory 类的 Delete 方法删除 C 盘根目录下的 Test 文件夹。

Directory.Delete("C:\\Test");

2.  DirectoryInfo 类的 Delete 方法

该方法是指永久删除文件,语法如下:

public override void Delete()

public void Delete(bool recursive)

recursive:若为 true;则删除该目录、其子目录以及所有文件;否则为 false。

说明

第一种重载形式,如果 DirectoryInfo 为空,则删除它。第二种重载形式,删除 DirectoryInfo 对象,并指定是否要删除子目录和文件。

例8

下面的代码首先实例化一个 DirectoryInfo 对象,然后使用该对象调用 DirectoryInfo 类的 Delete 方法删除 C 盘根目录下的 Test 文件夹。

DirectoryInfo dinfo = new DirectoryInfo("C:\\Test");

dinfo.Delete();

05  遍历文件夹

遍历文件夹时,可以分别使用 DirectoryInfo 类提供的 GetDirectories 方法、GetFiles 方法和 GetFileSystemInfos 方法。下面对这 3 个方法进行详细讲解。

1.  GetDirectories 方法

该方法用来返回当前目录的子目录。该方法为可重载方法,它有以下 3 种重载形式:

public DirectoryInfo[] GetDirectories()

public DirectoryInfo[] GetDirectories(string searchPattern)

public DirectoryInfo[] GetDirectories(string searchPattern,SearchOption searchOption)

searchPattern:搜索字符串,如用于搜索所有以单词 System 开头的目录的 “ Syatem ”

searchOption:SearchOption 枚举的一个值,指定搜索操作是应仅包含当前目录还是应包含所有子目录。

返回值:第一种重载形式的返回值为 DirectoryInfo 对象的数组。第二种和第三种重载形式的返回值与 searchPattern 匹配的 DirectoryInfo 类型的数组。

2.  GetFiles 方法

该方法返回当前目录的文件列表。该方法为可重载方法,它有以下 3 种重载形式:

public FileInfo[ ] GetFiles()

public FileInfo[ ] GetFiles(string searchPattern)

public FileInfo[ ] GetFiles(string searchPattern,SearchOption searchOption)

searchOption:搜索字符串(如 “ *.txt ”)。

searchOption:SearchOption 枚举的一个值,指定搜索操作是应仅包含当前目录还是应包含所有子目录。

返回值:FileInfo 类型数组。

3.  GetFileSystemInfos 方法

该方法返回表示某个目录中所有文件和子目录的 FileSystemInfo 类型数组。该方法为可重载方法,有以下两种重载形式:

public FileSystemInfo[ ] GetFileSystemInfos()

public FileSystemInfo[] GetFileSystemInfos(string searchPattern)

searchPattern:搜索字符串。

返回值:第一种重载形式的返回值为 FileSystemInfo 项的数组。第二种重载形式的返回值为与搜索条件匹配的 FileSystemInfo 对象的数组。

说明

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

例9

下面演示如何遍历指定的文件夹,程序开发步骤如下:

(1)新建一个 Windows 应用程序,并命名为 Test06,默认窗体为 Form1.cs。

(2)在Form1 窗体中添加一个FolderBrowserDialog控件、一个TextBox控件、一个Button控件和一个ListView 控件。其中,FolderBrowserDialog 控件用来显示 “ 浏览文件夹 ” 对话框,TextBox 控件用来显示选择的文件夹路径及名称,Button 控件用来打开 “ 浏览文件夹 ” 对话框并获取选择文件夹中的子文件夹及文件,ListView 控件用来显示选择的文件夹中的子文件夹及文件信息。

(3)程序主要代码如下:

private void button1_Click(object sender,EventArgs e)
{
     listView1.Items.Clear()                                         //清空 ListView 控件中的项 
     if(folderBrowserDialog1.ShowDialog() == DialogResult.OK)
     {
           textBox1.Text = folderBrowserDialog1.SelectedPath;
           DirectoryInfo dinfo = new DirectoryInfo(textBox1.Text);  //实例化 Directoryinfo 对象
           //获取指定目录下的所有子目录及文件类型
           FileSystemInfo[] fsinfos = dinfo.GetFileSystemInfos(); 
           foreach(FileSystemInfo fsinfo in fsinfos)
           {
               if(fsinfo is DirectoryInfo)                         //判断是否是文件夹
               {
                     //使用获取的文件夹名称实例化 DirectoryInfo 对象
                     DirectoryInfo dirinfo = new DirectoryInfo(fsinfo.FullName);
                     listView1.Items.Add(dirinfo.Name);           //为 ListView 控件添加文件夹信息 
                     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 finfo = new FileInfo(fsinfo.FullName); //使用获取的文件名称实例化 FileInfo对象 
                     listView1.Items.Add(finfo.Name);                //为 ListView 控件添加文件信息 
                     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 控件中。

往期推荐

2fec58bc5592ef8d83f09218acbc39fb.png

Love life,love yourself

关注小编不迷路呦~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值