C# DirectoryInfo类的用法

news2024/11/20 19:37:14

在这里插入图片描述

在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.coloradmin.cn/o/1195660.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

拥抱中国发展新机遇,原知因制药再次亮相2023进博会

11月5日至10日,第六届进博会在国家会展中心(上海)成功举办。作为世界上首个以进口为主题的国家级博览会,进博会成为构建新发展格局的窗口、高水平开放的载体,持续为世界经济注入正能量。 原知因制药再次亮相进博会&am…

开放领域问答机器人1

开放领域问答机器人是一种智能机器人,它不受限制,可以回答任何问题。这种机器人主要通过自然语言处理技术来理解用户的问题,并从大量的数据中获取相关信息,以提供准确的答案。它的应用领域广泛,包括客户服务、教育、医…

网易云音乐未登录接口返回301

网易云音乐 NodeJS 版 API (neteasecloudmusicapi.js.org) 上面是网易云音乐的官方API接口文档 当我调用接口发送请求的时候部分接口数据是需要登录之后进行获取的,但是当我发送请求的时候原生js项目中的跨端问题是比较难解决的。 遇到的问题:跨端请求…

嵌入式Linux系统中内存分配详解

Linux中内存管理 内存管理的主要工作就是对物理内存进行组织,然后对物理内存的分配和回收。但是Linux引入了虚拟地址的概念。 虚拟地址的作用 如果用户进程直接操作物理地址会有以下的坏处: 1、 用户进程可以直接操作内核对应的内存,破坏…

拓世法宝AI智能直播一体机,快速搭建品牌矩阵,开启扩张新里程

时光荏苒,数字时代悄然而至,短视频已成为品牌传播的新宠。在这个潮流中,短视频以一种无法阻挡的势头成为了品牌传播的新趋势。如何巧妙地利用短视频进行品牌传播,实现零成本的品牌升级,构建强大的品牌矩阵,…

Linux编辑器---vim的使用

Vim是一个高度可配置的文本编辑器,它是操作Linux的一款利器,旨在高效地创建和更改任何类型的文本。这款编辑器起源于"vi",并在此基础上发展出了众多新的特性。Vim被普遍推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来…

【每日OJ—— 206. 反转链表(链表)】

每日OJ—— 206. 反转链表(链表) 1.题目:206. 反转链表(链表)2.方法讲解:2.1解法:2.1.1.图文解析2.1.2.代码实现2.1.3.提交通过展示 1.题目:206. 反转链表(链表&#xff…

WPS的JS宏基础(二)——其他

数据的输入和输出 InputBox(‘请输入内容’) //输入框 alert(‘a’) //简单消息框 MsgBox(‘b’) //进阶消息框 Debug.Print(‘c’) //立即窗口 Console.log(‘d’) //立即窗口 编写规则与注释 1.严格遵循大小写规范 2.每条语句之间用分号分隔 3.复合语句块(块中…

uni.getLocation() 微信小程序 线上获取失败

开发版,体验版,用此方法都可以正确获取定位,但是在小程序的线上,总是获取失败 参考:uni-app微信小程序uni.getLocation获取位置;authorize scope.userLocation需要在app.json中声明permission;小程序用户拒绝授权后重新授权-CSDN博客 uniapp 中的 uni.…

[sd_scripts]之fine_tune

https://github.com/kohya-ss/sd-scripts/blob/main/docs/fine_tune_README_ja.mdhttps://github.com/kohya-ss/sd-scripts/blob/main/docs/fine_tune_README_ja.md fine-tune微调是指使用图像和文本对来训练模型,不包括lora、textual inversion和hypernetwork。 …

JavaFX03(首页搭建)学生管理业务逻辑老师管理登录注册

数据库脚本 --创建学生管理系统 create database db_school; --使用当前数据库 use db_school; --创建学生表 create table tb_stu(sid int primary key identity(1,1),sname varchar(50),spwd varchar(50),ssex varchar(10),sage int,shobby varchar(100),saddress varchar(1…

STM32H743XX/STM32H563XX芯片烧录一次后,再次上电无法烧录

近期在使用STM32H563ZIT6这款芯片在开发板上使用正常,烧录到自己打的板子就遇到了芯片烧录一次后,再次上电无法烧录的问题。 遇到问题需要从以下5点进行分析。 首先看下开发板的原理图 1.BOOT0需要拉高。 2.NRST脚在开发板上是悬空的。这里我建议大家…

前端 a链接 如何实现下载功能

目录 前言 标签 download a 标签链接下载的实现 1. 整体流程 2. 实现步骤 3. 类图 4. 代码示例 download 使用注意点 1. 同源 URL 的限制 2. 不能携带 Header Blob 转换 方法1. 用作 URL(blob:) 方法2. 转换为 base64(data:&…

[C++随笔录] 红黑树

红黑树 红黑树的特点红黑树的模拟实现红黑树的底层结构insert的实现实现思路更新黑红比例的逻辑insert的完整代码 insert的验证 源码 红黑树的特点 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是 Red或 Black。…

什么是Selenium?如何使用Selenium进行自动化测试?

什么是 Selenium? Selenium 是一种开源工具,用于在 Web 浏览器上执行自动化测试(使用任何 Web 浏览器进行 Web 应用程序测试)。   等等,先别激动,让我再次重申一下,Selenium 仅可以测试Web应用…

实现跨域必须要知道的知识点

目录 同源策略 cookie iframe和多窗口通信 片段识别符 window.postMessage() LocalStorage Storage接口: 概述 属性和方法 Storage.setItem() Storage.getItem() Storage.removeItem() Storage.clear() Storage.key() storage 事件 同源策略 浏览器…

响应式少儿舞蹈培训网站模板源码

模板信息: 模板编号:6903 模板编码:UTF8 模板颜色:橙色 模板分类:学校、教育、培训、科研 适合行业:培训机构类企业 模板介绍: 本模板自带eyoucms内核,无需再下载eyou系统&#xf…

从开源项目聊鱼眼相机的“360全景拼接”

目录 概述 从360全景的背景讲起 跨过参数标定聊透视变化 拼接图片后处理 参考文献 概述 写这篇文章的原因完全源于开源项目(GitHub参阅参考文献1)。该项目涵盖了环视系统的较为全貌的制作过程,包含完整的标定、投影、拼接和实时运行流程。该篇文章主要是梳理全…

深入探析隔离CAN收发器NSI1050-DDBR各项参数

NSI1050-DDBR是一个隔离的CAN收发器,可以完全与ISO11898-2标准兼容。 NSI1050-DDBR集成了两个通道的数字隔离器和一个高电平可靠性CAN收发器。 数字隔离器是基于Novosense电容隔离技术的氧化硅隔离。 高度集成的解决方案可以帮助简化系统设计并提高可靠性。 NSI1050…

【postgresql】CentOS7 安装pgAdmin 4

CentOS7 安装PostgreSQL Web管理工具pgAdmin 4。 pgAdmin 是世界上最先进的开源数据库 PostgreSQL 最受欢迎且功能丰富的开源管理和开发平台。 下载地址: pgadmin-4 download pgAdmin 4分为桌面版和服务器版。 我们这里部署服务器版本。 安装RPM包。 安装源 s…