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

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)生成效果 

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/236791.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

抖音小店本地生活服务是什么,为何聚合服务商可以带来更多商机?

抖音小店本地生活服务是指在抖音平台上提供与本地生活相关的各种服务的商家,比如外卖服务、快递服务、餐饮服务、美容美发等。这些服务商可以在抖音平台上创建自己的小店,并通过发布视频、图片等形式来展示并销售他们的服务和产品。最近,市场…

11.30_黑马Redis实战篇分布式锁

实战篇9 设立一个在jvm外的锁监视器,可以处理多线程的问题 实战篇10 获取锁的时候,要同时发生获取锁以及设置到期时间。 实战篇11 thinking:JAVA中的自动拆箱与装箱? 【Java基础】自动拆装箱_Elephant_King的博客-CSDN博客 TR…

虚幻学习笔记4—文本内容处理

一、前言 本文使用的虚幻引擎5.3.2,在虚幻中已经集成了很多可以直接处理多样化文本的蓝图,比如格式化动态显示、浮点数多样化等。 二、实现 2.1、格式化文本显示动态内容:在设置某个文本时可以使用“Format Text”蓝图设置自定义可以的显示…

传统算法:使用 Pygame 实现归并排序

使用 Pygame 模块实现了归并排序的动画演示。首先,它生成一个包含随机整数的数组,并通过 Pygame 在屏幕上绘制这个数组的条形图。接着,通过归并排序算法对数组进行排序,动画效果可视化每一步的排序过程。在排序的过程中,程序将数组递归地分成两半,分别进行排序,然后再将…

Spring Security 6.x 系列(7)—— 源码分析之Builder设计模式

一、Builder设计模式 WebSecurity、HttpSecurity、AuthenticationManagerBuilder 都是框架中的构建者,把他们放到一起看看他们的共同特点: 查看AuthenticationManagerBuilder的继承结构图: 查看HttpSecurity的继承结构图: 查看W…

正反转马达驱动芯片 D6287F,驱 动 电 流 达 1.0A,应用于VCRs及 音 频 设 备 等 电 机 的 驱 动 中

D6287F 是 一 块 正 反 转 马 达 驱 动 电 路 ,两 种 逻 辑 输 入 方 式 可 控 制 马 达 的 正 转 、 反 转 、 停 止 、 中 断 等 。 内 置 马 达 停 止 时 省 电 电 路 及 热 保 护 电 路 。 最 大 驱 动 电 流 达 1.0A 。 广 泛 用 于 VCRs及 音 频 设 备 等 电…

FL Studio21.1.1.3750中文版是数字音频工作站 (DAW)

FL Studio水果音乐编曲软件中文版,一款强大的音乐制作软件,可以进行音乐编曲、剪辑、录音、混音。FL Studio21.1.1.3750中文版是数字音频工作站 (DAW) 之一,日新月异。它是一款录音机和编辑器,可让您不惜一切代价制作精美的音乐作品并保存精彩的活动画廊…

JavaEE——简单认识CSS

文章目录 一、简单了解什么是 CSS二、CSS 选择器1.标签选择器2.类选择器3.ID 选择器4.后代选择器5.子选择器6.伪类选择器 三、字体属性1.设置字体家族2.设置字体大小3.设置字体粗细4.文字倾斜 四、文本属性1.文本对齐2.文本装饰3.文本缩进4.背景设置 五、圆角矩形六、CSS 盒子模…

Kotlin学习——kt里的作用域函数scope function,let,run,with,apply,also

Kotlin 是一门现代但已成熟的编程语言,旨在让开发人员更幸福快乐。 它简洁、安全、可与 Java 及其他语言互操作,并提供了多种方式在多个平台间复用代码,以实现高效编程。 https://play.kotlinlang.org/byExample/01_introduction/02_Functio…

剑指 Offer(第2版)面试题 11:旋转数组的最小数字

剑指 Offer(第2版)面试题 11:旋转数组的最小数字 剑指 Offer(第2版)面试题 11:旋转数组的最小数字解法1:二分查找 剑指 Offer(第2版)面试题 11:旋转数组的最小…

LeetCode(45)最长连续序列【哈希表】【中等】

目录 1.题目2.答案3.提交结果截图 链接: 最长连续序列 1.题目 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1&a…

鸿蒙原生应用/元服务开发-开发者如何进行真机测试

前提条件:已经完成鸿蒙原生应用/元服务开发,已经能相对熟练使用DevEco Studio,开发者自己有鸿蒙4.0及以上的真机设备。 真机测试具体流程如下 1.手机打开开发者模式 2.在项目中,左上角 文件(F)->项目结构 进行账号连接 3.运行