C# DirectoryInfo类的用法

在这里插入图片描述

在C#中,DirectoryInfo类是System.IO命名空间中的一个类,用于操作文件夹(目录)。通过DirectoryInfo类,我们可以方便地创建、删除、移动和枚举文件夹。本文将详细介绍DirectoryInfo类的常用方法和属性,并提供相应的代码示例。

目录

    • 创建DirectoryInfo实例
    • 常用方法
      • Create()
      • Delete()
      • MoveTo(string destDirName)
      • GetDirectories()
      • GetFiles()
    • 常用属性
      • FullName
      • Name
      • Parent
      • Exists
    • 完整示例
    • 总结
    • 参考资料


在这里插入图片描述

创建DirectoryInfo实例

要使用DirectoryInfo类,首先需要创建一个DirectoryInfo实例。可以通过以下两种方式来创建:

  1. 使用构造函数创建
string path = "C:\\myFolder";
DirectoryInfo di = new DirectoryInfo(path);

通过指定文件夹路径来创建一个DirectoryInfo对象。

  1. 使用静态方法获取
DirectoryInfo di = new DirectoryInfo(@"C:\myFolder");

直接使用静态方法Directory.CreateDirectory()来获取一个DirectoryInfo对象。


常用方法

下面是DirectoryInfo类的常用方法:

Create()

创建文件夹

di.Create();

可以使用Create()方法来创建一个新的文件夹。如果文件夹已经存在,该方法不会抛出异常。

Delete()

删除文件夹

di.Delete();

使用Delete()方法可以删除指定的文件夹。该方法将删除目标文件夹及其所有子文件夹和文件。如果目标文件夹不存在,则该方法不会抛出异常。

MoveTo(string destDirName)

移动文件夹

di.MoveTo("D:\\newFolder");

使用MoveTo()方法可以将文件夹移动到指定的目录中。目标目录必须不存在,否则将抛出异常。

GetDirectories()

获取子文件夹列表

DirectoryInfo[] subDirs = di.GetDirectories();
foreach (DirectoryInfo subDir in subDirs)
{
    Console.WriteLine(subDir.Name);
}

使用GetDirectories()方法可以获取当前文件夹下所有的子文件夹。该方法返回一个DirectoryInfo对象数组,可以通过遍历数组来访问每个子文件夹。

GetFiles()

获取文件列表

FileInfo[] files = di.GetFiles();
foreach (FileInfo file in files)
{
    Console.WriteLine(file.Name);
}

使用GetFiles()方法可以获取当前文件夹下的所有文件。该方法返回一个FileInfo对象数组,可以通过遍历数组来访问每个文件。


常用属性

下面是DirectoryInfo类的常用属性:

FullName

获取文件夹的完整路径

string folderPath = di.FullName;
Console.WriteLine(folderPath);

使用FullName属性可以获取文件夹的完整路径,包括文件夹的根目录。

Name

获取文件夹的名称

string folderName = di.Name;
Console.WriteLine(folderName);

使用Name属性可以获取文件夹的名称。

Parent

获取文件夹的父级目录

DirectoryInfo parentFolder = di.Parent;
Console.WriteLine(parentFolder.Name);

使用Parent属性可以获取文件夹的父级目录,返回一个DirectoryInfo对象。

Exists

判断文件夹是否存在

if (di.Exists)
{
    Console.WriteLine("文件夹存在");
}
else
{
    Console.WriteLine("文件夹不存在");
}

使用Exists属性可以判断文件夹是否存在,返回一个布尔值。


完整示例

using System;
using System.IO;

namespace DirectoryInfoDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            string path = @"C:\myFolder";
            DirectoryInfo di = new DirectoryInfo(path);

            // 创建文件夹
            di.Create();

            // 移动文件夹
            di.MoveTo("D:\\newFolder");

            // 获取子文件夹列表
            DirectoryInfo[] subDirs = di.GetDirectories();
            foreach (DirectoryInfo subDir in subDirs)
            {
                Console.WriteLine(subDir.Name);
            }

            // 获取文件列表
            FileInfo[] files = di.GetFiles();
            foreach (FileInfo file in files)
            {
                Console.WriteLine(file.Name);
            }

            // 获取文件夹的完整路径
            string folderPath = di.FullName;
            Console.WriteLine(folderPath);

            // 获取文件夹的名称
            string folderName = di.Name;
            Console.WriteLine(folderName);

            // 获取文件夹的父级目录
            DirectoryInfo parentFolder = di.Parent;
            Console.WriteLine(parentFolder.Name);

            // 判断文件夹是否存在
            if (di.Exists)
            {
                Console.WriteLine("文件夹存在");
            }
            else
            {
                Console.WriteLine("文件夹不存在");
            }
        }
    }
}

总结

通过DirectoryInfo类,我们可以轻松地创建、删除、移动和枚举文件夹。本文详细介绍了DirectoryInfo类的常用方法和属性,并提供了相应的代码示例。希望本文对你有所帮助!如果有任何问题,请随时留言。

参考资料

  • Microsoft Docs - DirectoryInfo Class

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

车间安灯呼叫看板的功能与优势介绍

现在的工厂车间的管理变得越来越复杂,生产过程中可能会出现各种问题,如设备故障、物料短缺、工人伤病等。为了提高生产效率、优化生产管理,许多工厂引入了车间安灯呼叫看板系统。本文将介绍车间安灯呼叫看板的功能与优势。 一、功能介绍 1. 实…

图像实验室搭建

#搭建一个简单的图像实验室#,满足中低端camera产品的调试和测试需求。 目录 (1)实验室的功能 (2)实验室的设备 1、光源 2、图卡 3、辅助设备(升级) (3)实验室的布…

[单片机课程设计报告汇总] 单片机设计报告常用硬件元器件描述

[单片机课程设计必看] 单片机设计报告常用描述 硬件设计 AT89C51最小系统 AT89C51是美国ATMEL公司生产的低电压,高性能CMOS16位单片机,片内含4k bytes的可反复擦写的只读程序存储器和128 bytes的随机存取数据存储器,期间采用ATMEL公司的高…

视通科技4K30分布式编解码一体机,功能强大,性价比之王

随着信息技术的日新月异,各领域对于音视频传输、控制和显示等方面的需求呈现出爆发式的增长。这种需求的增长源于多种因素,包括但不限于高清视频的普及,实时音视频通信的广泛应用,以及各种显示设备的升级换代。 在这样的背景下&a…

Kvaser CAN硬件在Top Dutch Solar的遥测系统中发挥重要作用

Top Dutch Solar Racing(荷兰顶级太阳能赛车队)是2023年Bridgestone World Solar Challenge(普利司通世界太阳能挑战赛)的参赛车队之一,其赛车上搭载的Kvaser Ethercan HS是为基于Wifi的实时遥测系统捐赠的。Kvaser Me…

高级着色语言(HLSL)

High-Level Shading Language,简称为HLSL,可以使用HLSL编写顶点着色器和像素着色器程序,简要地说,顶点着色器和像素着色器就是我们自行编写的一些规模较小的定制程序,这些定制程序可取代固定功能流水线中某一功能模块&…

Camtasia2024中文免费版电脑录屏软件

大家都知道在视频播放中,如果有一个令人印象深刻的精彩开头,整个视频的内容都能因此得到不少升华。所以有一个好的片头对于视频的制作来说十分重要。 要怎么做出效果不错的片头呢? 首先,我们要选择合适的素材来制作片头。这里直…

Qt 之自定义控件(开关按钮)

Qt 之自定义控件(开关按钮) 原理源码运行结果 接触过IOS系统的童鞋们应该对开关按钮很熟悉,在设置里面经常遇到,切换时候的滑动效果比较帅气。 通常说的开关按钮,有两个状态:on、off。 下面,我们…

【LSNET】用自己的数据复现LSNet变化检测代码

之前讲过LSNet网络的论文详解了,感兴趣的童鞋请移步【LSNET】变化检测。 本篇主要是讲解如何用自己的数据复现代码【python】。 🌺论文:paper 🌺代码: code 目录 🔔🔔1.环境安装

linux下安装向日葵

https://sunlogin.oray.com/download/linux?typepersonal下载 在文件所在位置的空白处右键(在此处打开终端) 输入命令: sudo dpkg -i 文件名.deb (文件名为下载的deb文件名字)/usr/local/sunlogin/bin/sunlogincl…

keepalived 的安装部署及使用详细完整版

架构 1.安装 yum install keepalived -ysystemctl enable keepalivedsystemctl restart keepalivedsystemctl status keepalived2.部署配置样例 vim /etc/keepalived/keepalived.conf global_defs {router_id PROXYSQL_HAscript_user rootenable_script_security } vrrp_scri…

掉瓶子小游戏

欢迎来到程序小院 掉瓶子 玩法:旋转的瓶子,根据瓶子方向,点击鼠标左键瓶子掉落,从桌面中间掉下即得1分,卡在桌边瓶子碎了游戏结束,快去掉瓶子吧^^。开始游戏https://www.ormcc.com/play/gameStart/203 htm…

TSINGSEE青犀视频平台EasyCVR自定义可视化页面一览

视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,在视频监控播放上,视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放,可同时播放多路视频流,也能支…

【科研新手指南2】「NLP+网安」相关顶级会议期刊 投稿注意事项+会议等级+DDL+提交格式

「NLP网安」相关顶级会议&期刊投稿注意事项 写在最前面一、会议ACL (The Annual Meeting of the Association for Computational Linguistics)IH&MMSec (The ACM Workshop on Information Hiding, Multimedia and Security)CCS (The ACM Conference on Computer and Co…

使用JDBC连接数据库出现The server time zone value ‘�й���׼ʱ��‘ is unrecognized 的解决方案

看到网上的大佬们说是引入的依赖版本太高所以导致了时区有问题 但是我把依赖的版本改低了还是报错 用另一种办法直接在配置文件中修改url然后成功解决 spring:datasource:url: jdbc:mysql://127.0.0.1:3306/datasource?useUnicodetrue&characterEncodingutf8&useSSL…

山西电力市场日前价格预测【2023-11-15】

日前价格预测 预测说明: 如上图所示,预测明日(2023-11-15)山西电力市场全天平均日前电价为237.36元/MWh。其中,最高日前电价为360.45元/MWh,预计出现在00:15。最低日前电价为0.00元/MWh,预计出…

中国人民大学与加拿大女王大学金融硕士——热爱会穿越时间,埋在心底的读研梦也是

随着时光的流转,我们都在跌跌撞撞中成长,改变,但有一种东西是永恒的,那就是我们对梦想的渴望。那些被尘封的读研梦想,如同穿越漫长岁月,等待在未来的某一天重见天日。梦想,就如同热爱一样&#…

如何查找领取淘宝优惠券?

如何查找领取淘宝优惠券? 1、手机安装「草柴」领券应用后,打开手机淘宝,挑选要购买的商品,并点击分享复制链接; 2、复制淘宝商品链接后,打开「草柴」APP,将复制的链接粘贴并查询该商品优惠券及…

【机器学习】朴素贝叶斯算法:多项式、高斯、伯努利,实例应用(心脏病预测)

1. 朴素贝叶斯模型 对于不同的数据,我们有不同的朴素贝叶斯模型进行分类。 1.1 多项式模型 (1)如果特征是离散型数据,比如文本这些,推荐使用多项式模型来实现。该模型常用于文本分类,特别是单词&#xf…

竞赛选题 深度学习的智能中文对话问答机器人

文章目录 0 简介1 项目架构2 项目的主要过程2.1 数据清洗、预处理2.2 分桶2.3 训练 3 项目的整体结构4 重要的API4.1 LSTM cells部分:4.2 损失函数:4.3 搭建seq2seq框架:4.4 测试部分:4.5 评价NLP测试效果:4.6 梯度截断…