当前位置:   article > 正文

C#文件夹基本操作(判断文件夹是否存在、创建文件夹、移动文件夹、删除文件夹以及遍历文件夹中的文件)_c# 创建文件夹

c# 创建文件夹

目录

一、判断文件夹是否存在

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()方法用于确定给定路径是否引用磁盘上的现有目录,语法如下。

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

        相对路径信息被解释为相对于当前的工作目录。 

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

2. DirectoryInfo类的Exists属性         

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

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

二、创建文件夹

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

1. Directory类的CreateDirectory()方法

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

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

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

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

2.DirectoryInfo类的Create()方法

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

  1. public void Create ()
  2. public void Create (DirectorySecurity directorySecurity)

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

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

三、移动文件夹

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

1. Directory类的Move()方法

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

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

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

2.DirectoryInfo类的MoveTo()方法

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

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

四、删除文件夹

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

1. Directory类的Delete()方法

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

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

2.DirectoryInfo类的Delete()方法

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

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

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

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

五、遍历文件夹   

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

1.GetDirectories()方法

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

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

2.GetFiles()方法

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

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

3.GetFileSystemInfos()方法

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

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

4.示例

(1)源码

  1. namespace _06
  2. {
  3. public partial class Form1 : Form
  4. {
  5. private readonly TextBox? textBox1;
  6. private readonly Label? label1;
  7. private readonly Button? button1;
  8. private readonly FolderBrowserDialog? folderBrowserDialog1;
  9. private readonly ListView? listView1;
  10. private readonly ColumnHeader? columnHeader1;
  11. private readonly ColumnHeader? columnHeader2;
  12. private readonly ColumnHeader? columnHeader3;
  13. private readonly ColumnHeader? columnHeader4;
  14. public Form1()
  15. {
  16. InitializeComponent();
  17. //文本框控件
  18. textBox1 = new TextBox();
  19. {
  20. textBox1.Location = new Point(97, 18);
  21. textBox1.Name = "textBox1";
  22. textBox1.Size = new Size(159, 21);
  23. textBox1.Text = "";
  24. }
  25. //标签控件
  26. label1 = new Label();
  27. {
  28. label1.AutoSize = true;
  29. label1.Location = new Point(16, 21);
  30. label1.Text = "选择文件夹:";
  31. }
  32. //按钮控件及事件
  33. button1 = new Button();
  34. {
  35. button1.Location = new Point(268, 16);
  36. button1.Name = "button1";
  37. button1.Size = new Size(60, 23);
  38. button1.Text = "浏览";
  39. button1.UseVisualStyleBackColor = true;
  40. button1.Click += new EventHandler(Button1_Click);
  41. }
  42. //文件夹浏览控件
  43. folderBrowserDialog1 = new FolderBrowserDialog();
  44. {
  45. }
  46. //列标题控件
  47. columnHeader1 = new ColumnHeader();
  48. {
  49. columnHeader1.Text = "文件名";
  50. columnHeader1.Width = 200;
  51. }
  52. columnHeader2 = new ColumnHeader();
  53. {
  54. columnHeader2.Text = "路径";
  55. columnHeader2.Width =500;
  56. }
  57. columnHeader3 = new ColumnHeader();
  58. {
  59. columnHeader3.Text = "大小";
  60. columnHeader3.Width = 40;
  61. }
  62. columnHeader4 = new ColumnHeader();
  63. {
  64. columnHeader4.Text = "创建日期";
  65. columnHeader4.Width = 60;
  66. }
  67. // listView1控件及设置
  68. listView1 = new ListView();
  69. {
  70. listView1.Columns.AddRange(
  71. [
  72. columnHeader1,
  73. columnHeader2,
  74. columnHeader3,
  75. columnHeader4
  76. ]);
  77. listView1.HideSelection = false;
  78. listView1.Location = new Point(12, 45);
  79. listView1.Name = "listView1";
  80. listView1.Size = new Size(800, 100);
  81. listView1.TabIndex = 3;
  82. listView1.UseCompatibleStateImageBehavior = false;
  83. listView1.View = View.Details;
  84. }
  85. //Form1,要放在最末尾,否则空白
  86. ClientSize = new Size(820, 160);
  87. Name = "Form1";
  88. Text = "Form1";
  89. Controls.Add(textBox1);
  90. Controls.Add(label1);
  91. Controls.Add(button1);
  92. Controls.Add(listView1);
  93. PerformLayout();
  94. }
  95. private void Button1_Click(object? sender, EventArgs e)
  96. {
  97. listView1?.Items.Clear();
  98. if (folderBrowserDialog1?.ShowDialog() == DialogResult.OK)
  99. {
  100. textBox1!.Text = folderBrowserDialog1.SelectedPath;
  101. DirectoryInfo dinfo = new(textBox1.Text); //实例化DirectoryInfo对象
  102. FileSystemInfo[] fsinfos = dinfo.GetFileSystemInfos(); //获取指定目录下的所有子目录及文件类型
  103. foreach (FileSystemInfo fsinfo in fsinfos)
  104. {
  105. if (fsinfo is DirectoryInfo) //判断是否文件夹
  106. {
  107. DirectoryInfo directoryInfo = new(fsinfo.FullName); //使用获取的文件夹名称实例化DirectoryInfo对象
  108. DirectoryInfo dirinfo = directoryInfo;
  109. listView1?.Items.Add(dirinfo.Name); //为ListView控件添加文件夹信息
  110. listView1?.Items[listView1.Items.Count - 1].SubItems
  111. .Add(dirinfo.FullName);
  112. listView1?.Items[listView1.Items.Count - 1].SubItems.Add("");
  113. listView1?.Items[listView1.Items.Count - 1].SubItems
  114. .Add(dirinfo.CreationTime.ToShortDateString());
  115. }
  116. else
  117. {
  118. FileInfo finfo = new(fsinfo.FullName); //使用获取的文件名称实例化FileInfo对象
  119. listView1?.Items.Add(finfo.Name); //为ListView控件添加文件信息
  120. listView1?.Items[listView1.Items.Count - 1].SubItems.Add(finfo.FullName);
  121. listView1?.Items[listView1.Items.Count - 1].SubItems.Add(finfo.Length.ToString());
  122. listView1?.Items[listView1.Items.Count - 1].SubItems
  123. .Add(finfo.CreationTime.ToShortDateString());
  124. }
  125. }
  126. }
  127. }
  128. }
  129. }

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

(2)生成效果 

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

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/913790
推荐阅读
相关标签
  

闽ICP备14008679号