目录

一、判断文件夹是否存在

1.Directory类的Exists()方法

2. DirectoryInfo类的Exists属性         

二、创建文件夹

1. Directory类的CreateDirectory()方法

2.DirectoryInfo类的Create()方法

三、移动文件夹

1. Directory类的Move()方法

2.DirectoryInfo类的MoveTo()方法

四、删除文件夹

1. Directory类的Delete()方法

2.DirectoryInfo类的Delete()方法

五、遍历文件夹   

1.GetDirectories()方法

2.GetFiles()方法

3.GetFileSystemInfos()方法

4.示例

(1)源码

(2)生成效果 


        判断文件夹是否存在时,可以使用Directory类的Exists()方法或者DirectoryInfo类的Exists属性实现

一、判断文件夹是否存在

1.Directory类的Exists()方法

        Exists()方法用于确定给定路径是否引用磁盘上的现有目录语法如下

public static bool Exists (string path)
☑ path:要测试路径。
☑ 返回值:如果path引用现有目录,则为true;否则为false。允许path参数指定相对绝对路径信息

        相对路径信息解释相对当前工作目录。 

//使用Directory类的Exists()方法判断C盘根目录是否存在Test文件夹。
Directory.Exists("C:\Test ");

2. DirectoryInfo类的Exists属性         

获取指示目录是否存在的值,语法如下

public override bool Exists{get;}
属性值:如果目录存在,则为true;否则为false。 
//调用DirectoryInfo类中的Exists属性判断C盘根目录下是否存在Test文件夹
Directorylnfo dinfo =new Directorylnfo ("C:\Test");
if (dinfo.Exists)
{}

二、创建文件

        创建文件夹可以使用Directory类的CreateDirectory()方法或者DirectoryInfo类的Create()方法来实现

1. Directory类的CreateDirectory()方法

        CreateDirectory()方法为可重载方法,它有以下两种重载形式。

public static DirectoryInfo CreateDirectory (string path)
public static DirectoryInfo CreateDirectory (string path,DirectorySecurity directorySecurity)
☑ path:要创建的目录路径。 
☑ directorySecurity:要应用于此目录的访问控制。 
☑ 返回值:第一种重载形式的返回值为由path指定的DirectoryInfo;第二种重载形式的返回值为新创建的目录的DirectoryInfo对象

        当path参数中的目录已经存在或者path的某些部分无效时,将发生异常path参数指定目录路径,而不是文件路径

//调用Directory类的CreateDirectory()方法在C盘根目录下创建一个Test文件夹
Directory.CreateDirectory ("C:\Test ");

2.DirectoryInfo类的Create()方法

        Create()方法为可重载方法,它有以下两种重载形式。

public void Create ()
public void Create (DirectorySecurity directorySecurity)

        directorySecurity:主要应用于此目录的访问控制

//调用DirectoryInfo类的Create()方法在C盘根目录下创建一个Test文件夹
Directorylnfo dinfo =new DirectoryInfo ("C:\Test ");
dinfo.Create();

三、移动文件

        移动文件夹时,可以使用Directory类的Move()方法或者DirectoryInfo类的MoveTo()方法来实现。 

1. Directory类的Move()方法

        Move()方法用于文件或目录及其内容移到位置,语法如下

public static void Move (string sourceDirName,string destDirName)
☑ sourceDirName:要移动的文件或目录的路径。 
☑ destDirName:指向sourceDirName的新位置路径
//调用Directory类的Move()方法将C盘根目录下的Test文件夹移动到C盘根目录下的“新建文件夹”文件夹中
Directory.Move("C:\Test","C:\新建文件夹NTest");

        使用Move()方法和MoveTo()方法移动文件夹时需要统一磁盘根目录例如,C盘下的文件夹只能移动到C盘中的某个文件夹下。

2.DirectoryInfo类的MoveTo()方法

        MoveTo()方法用于将DirectoryInfo对象及其内容移动到新路径,语法如下

public void MoveTo (string destDirName)
destDirName:要将此目录移动到的目标位置名称和路径。目标不能是另一个具有相同名称的磁盘卷或目录,它可以是要将此目录作为子目录添加到其中的一个现有目录。
//调用DirectoryInfo类的MoveTo()方法将C盘根目录下的Test文件夹
//移动到C盘根目录下的“新建文件夹”文件夹中
Directorylnfo dinfo =new Directorylnfo ("C:\Test ");
dinfo.MoveTo("C:\新建文件夹\Test");

四、删除文件夹

        删除文件夹可以使用Directory类的Delete()方法或者DirectoryInfo类的Delete()方法来实现

1. Directory类的Delete()方法

        Delete()方法为可重载方法,它有以下两种重载形式。

public static void Delete(string path)
public static void Delete(string path,bool recursive)
☑ path:要移除的空目录/目录的名称。 
☑ recursive:若要移除path中的目录、子目录和文件,则为true;否则为false
//调用Directory类的Delete()方法删除C盘根目录下的Test文件夹
Directory.Delete("C:\Test");

2.DirectoryInfo类的Delete()方法

        Delete()方法是指永久删除文件,语法如下

public override void Delete()
public void Delete(bool recursive)
recursive:若为true,则删除此目录、其子目录以及所有文件;否则为false。 

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

//调用DirectoryInfo类的Delete()方法删除C盘根目录下的Test文件夹
Directorylnfo dinfo =new Directorylnfo ("C:\Test");
dinfo.Delete()

五、遍历文件夹   

        遍历文件夹时,可以分别使用DirectoryInfo类提供的
GetDirectories()
方法、
GetFiles()
方法和
GetFileSystemInfos()
方法。
        一般遍历文件夹时,都使用GetFileSystemInfos()方法,因为GetDirectories()方法只遍历文件夹中的子文件夹,GetFiles()方法只遍历文件夹中的文件,而GetFileSystemInfos()方法遍历文件夹中的所有子文件夹及文件。

1.GetDirectories()方法

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

public DirectoryInfo[]GetDirectories()
public Directorylnfo[]GetDirectories(string searchPattern)
public Directorylnfo[]GetDirectories(string searchPattern,SearchOption searchOption)
☑ searchPattern:搜索字符串,如用于搜索所有以单词System开头的目录的“System*”。
☑ searchOption:SearchOption枚举的一个值,指定搜索操作是应仅包含当前目录还是包含所有子目录。
☑ 返回值:第一种重载形式的返回值为DirectoryInfo对象的数组;第二种和第三种重载形式的返回值为与searchPattern匹配的DirectoryInfo类型数组

2.GetFiles()方法

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

public Filelnfo[]GetFiles()
public Filelnfo[]GetFiles(string searchPattern)
public Filelnfo[]GetFiles(string searchPattern,SearchOption searchOption)
☑ searchPattern:搜索字符串(如“*.txt”)。
☑ searchOption:SearchOption枚举的一个值,指定搜索操作是应仅包含当前目录还是包含所有子目录。
☑ 返回值:FileInfo类型数组

3.GetFileSystemInfos()方法

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

public FileSystemInfo[]GetFileSystemInfos()
public FileSystemInfo[]GetFileSystemInfos(string searchPattern)
☑ searchPattern:搜索字符串。
☑ 返回值:第一种重载形式的返回值为FileSystemInfo项的数组;第二种重载形式的返回值为与搜索条件匹配的FileSystemInfo对象的数组

4.示例

(1)源码

namespace _06
{
    public partial class Form1 : Form
    {
        private readonly TextBox? textBox1;
        private readonly Label? label1;
        private readonly Button? button1;
        private readonly FolderBrowserDialog? folderBrowserDialog1;
        private readonly ListView? listView1;
        private readonly ColumnHeader? columnHeader1;
        private readonly ColumnHeader? columnHeader2;
        private readonly ColumnHeader? columnHeader3;
        private readonly ColumnHeader? columnHeader4;

        public Form1()
        {
            InitializeComponent();
            //文本框控件
            textBox1 = new TextBox();
            {
                textBox1.Location = new Point(97, 18);
                textBox1.Name = "textBox1";
                textBox1.Size = new Size(159, 21);
                textBox1.Text = "";
            }
            //标签控件
            label1 = new Label();
            {
                label1.AutoSize = true;
                label1.Location = new Point(16, 21);
                label1.Text = "选择文件夹:";
            }
            //按钮控件事件
            button1 = new Button();
            {
                button1.Location = new Point(268, 16);
                button1.Name = "button1";
                button1.Size = new Size(60, 23);
                button1.Text = "浏览";
                button1.UseVisualStyleBackColor = true;
                button1.Click += new EventHandler(Button1_Click);
            }
            //文件夹浏览控件
            folderBrowserDialog1 = new FolderBrowserDialog();
            {

            }
            //列标题控件
           columnHeader1 = new ColumnHeader();
            {
                columnHeader1.Text = "文件名";
                columnHeader1.Width = 200;
            }
            columnHeader2 = new ColumnHeader();
            {
                columnHeader2.Text = "路径";
                columnHeader2.Width =500;
            }
            columnHeader3 = new ColumnHeader();
            {
                columnHeader3.Text = "大小";
                columnHeader3.Width = 40;
            }
            columnHeader4 = new ColumnHeader();
            {
                columnHeader4.Text = "创建日期";
                columnHeader4.Width = 60;
            }
            // listView1控件设置
            listView1 = new ListView();
            {
                listView1.Columns.AddRange(
                [
                    columnHeader1,
                    columnHeader2,
                    columnHeader3,
                    columnHeader4
                ]);
                listView1.HideSelection = false;
                listView1.Location = new Point(12, 45);
                listView1.Name = "listView1";
                listView1.Size = new Size(800, 100);
                listView1.TabIndex = 3;
                listView1.UseCompatibleStateImageBehavior = false;
                listView1.View = View.Details;
            }
            //Form1,要放在最末尾,否则空白
            ClientSize = new Size(820, 160);
            Name = "Form1";
            Text = "Form1";
            Controls.Add(textBox1);
            Controls.Add(label1);
            Controls.Add(button1);
            Controls.Add(listView1);
            PerformLayout();
        }

        private void Button1_Click(object? sender, EventArgs e)
        {
            listView1?.Items.Clear();
            if (folderBrowserDialog1?.ShowDialog() == DialogResult.OK)
            {
                textBox1!.Text = folderBrowserDialog1.SelectedPath;                
                DirectoryInfo dinfo = new(textBox1.Text);                           //实例化DirectoryInfo对象                
                FileSystemInfo[] fsinfos = dinfo.GetFileSystemInfos();              //获取指定目录下的所有子目录及文件类型
                foreach (FileSystemInfo fsinfo in fsinfos)
                {
                    if (fsinfo is DirectoryInfo)                                              //判断是否文件夹
                    {                       
                        DirectoryInfo directoryInfo = new(fsinfo.FullName); //使用获取的文件夹名称实例化DirectoryInfo对象
                        DirectoryInfo dirinfo = directoryInfo;                        
                        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(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());
                    }
                }
            }
        }
    }  
}

         采用设计Form1.cs[设计]的设计方法。

(2)生成效果 

         浏览选择一个文件夹,确定后就遍历文件夹

 

原文地址:https://blog.csdn.net/wenchm/article/details/134633343

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_34470.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注