LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

在 C# 中实现的目录基础操作

admin
2024年12月19日 17:46 本文热度 137

前言

在开发应用程序过程中,对操作系统上的文件夹存储文件和子文件夹操作是常见的需求。.NET中的Directory类提供了处理文件目录的功能。本文介绍如何读取文件夹的属性、获取文件夹的大小及文件个数、创建文件夹、遍历文件夹中的所有文件、移动文件夹和删除文件夹等常见基础操作。

Directory类提供了用于创建、复制、移动和删除目录和子目录的静态方法。在使用前,我们需要导入System.IO命名空间。

基础操作

1、校验目录是否存

Exists方法是判断指定的文件目录是否存在。下面是校验目录是否存的代码段:

string path = @"C:\Temp";// 校验目录是否存在,如果不存在则创建if (!Directory.Exists(path)){}

2、创建文件目录

CreateDirectory方法是在指定路径中创建具有指定安全性的目录或文件夹。如果文件目录是在系统盘(如C:),我们的应用程序需要以管理员权限运行。下面是创建文件目录的代码段:

string path = @"C:\Temp";string subPath = @"C:\Temp\test";// 校验目录是否存在,如果不存在则创建if (!Directory.Exists(path)){    // 创建目录    Directory.CreateDirectory(path);}// 校验目录是否存在,如果不存在则创建if (!Directory.Exists(subPath)) {    // 创建子目录    Directory.CreateDirectory(subPath);}

3、删除文件目录

Delete方法是从指定路径中永久删除空文件目录,如果文件夹包含子文件夹和文件,则必须先删除它们,然后才能删除文件夹。下面是删除文件目录的代码段:

// 校验目录是否存在,如果存在才执行删除if (Directory.Exists(subPath)){    // 删除目录 【非空目录报错】    Directory.Delete(subPath);}// 校验目录是否存在,如果存在才执行删除if (Directory.Exists(subPath)){    // 删除目录 及所有子目录与文件    Directory.Delete(subPath,true);}

4、移动文件目录

Move方法将现有目录移动到具有完整路径的新指定目录,它有原目录与目标目录两个参数。下面是移动文件目录的代码段:

string sourcePath = @"C:\Temp\test";string destPath = @"C:\Temp\dest";try{    Directory.Move(sourcePath, destPath);}catch (IOException ex){    Console.WriteLine(ex.Message);}

5、复制文件目录

下面是复制文件目录代码段:

public class DirectoryExtend{    /// <summary>    /// 复制目录    /// </summary>    /// <param name="source"></param>    /// <param name="target"></param>    public static void Copy(string source, string target)    {        try        {            if (!Directory.Exists(source))            {                throw new DirectoryNotFoundException($"复制原目录不存在: {source}");            }            // 如果目标目录不存在,则创建            if (!Directory.Exists(target))            {                Directory.CreateDirectory(target);            }            DirectoryInfo sourceDirectory = new DirectoryInfo(source);            DirectoryInfo[] subDirectorys = sourceDirectory.GetDirectories();            // 获取目录中的文件并将其复制到新位置            FileInfo[] files = sourceDirectory.GetFiles();            foreach (FileInfo file in files)            {                string tempPath = Path.Combine(target, file.Name);                file.CopyTo(tempPath, false);            }            // 如果要复制子目录,请将它们及其内容复制到新位置            foreach (DirectoryInfo sub in subDirectorys)            {                string tempPath = Path.Combine(target, sub.Name);                Copy(sub.FullName, tempPath);            }        }        catc h(Exception ex)         {            throw ex;        }    }}string sourcePath = @"C:\Temp\test";string destPath = @"C:\Temp\dest";DirectoryExtend.Copy(sourcePath, destPath);

6、获取和设置目录创建时间

SetCreationTimeGetCreationTime方法用于设置和获取指定目录的创建日期和时间。下面是获取和设置目录创建时间的代码段:

// 设置目录创建时间DateTime dateTime= Directory.GetCreationTime(path);Console.WriteLine(dateTime.ToString("yyyy-MM-dd HH:mm:ss"));// 注意,如果目录被打开,则修改失败,会提示异常// 获取和设置目录创建时间Directory.SetCreationTime(path, DateTime.Now);

7、获取和设置目录上次访问时间

SetLastAccessTimeGetLastAccessTime方法用于设置和获取指定目录的上次访问日期和时间。下面是获取和设置目录上次访问时间的代码段:

// 设置目录上次访问时间DateTime dateTime =  Directory.GetLastAccessTime(path);Console.WriteLine(dateTime.ToString("yyyy-MM-dd HH:mm:ss"));// 获取目录上次访问时间Directory.SetLastAccessTime(path, DateTime.Now);

8、获取和设置目录上次写入时间

SetLastWriteTimeGetLastWriteTime方法用于设置和获取指定目录的上次写入日期和时间。下面是设置和获取目录的上次写入日期和时间的代码段。

// 获取指定目录的上次写入日期和时间DateTime dateTime = Directory.GetLastWriteTime(path);// 设置指定目录的上次写入日期和时间Directory.SetLastWriteTime(path, DateTime.Now);

9、枚举目录

EnumerateDirectories方法返回指定目录中目录名称的可枚举集合,下面是枚举目录的代码段:
var dirs = from dir in    Directory.EnumerateDirectories(path)    select dir;    Console.WriteLine("目录数: {0}", dirs.Count<string>().ToString());// 遍历子目录foreach (var dir in dirs){    Console.WriteLine("{0}", dir.Substring(dir.LastIndexOf("\\") + 1));}

10、获取并设置当前目录

SetCurrentDirectory和 GetCurrentDirectory方法是指定的目录设置为当前目录和返回当前目录。下面是获取和设置当前目录的代码段:
// 设置当前目录Directory.SetCurrentDirectory(path);// 获取当前目录Console.WriteLine(Directory.GetCurrentDirectory());

11、获取子目录

GetDirectories 方法加载目录的所有子目录。要获取所有子目录,我们需要递归读取子目录。下面是获取子目录的代码段:
// 获取子目录string[] subdirectorys = Directory.GetDirectories(path);
下面是使用递归获取所有子目录的代码段:
/// <summary>/// /// </summary>/// <param name="directory"></param>public static void GetSubDirectories(string directory){    string[] subdirectoryEntries = Directory.GetDirectories(directory);    // 循环查看它们是否有其他子目录    foreach (string subdirectory in subdirectoryEntries)    {        LoadSubDirectorys(subdirectory);    }}/// <summary>/// /// </summary>/// <param name="directory"></param>private static void LoadSubDirectorys(string directory){    Console.WriteLine(directory);    string[] subDirectorys = Directory.GetDirectories(directory);    foreach (string subdirectory in subDirectorys)    {        LoadSubDirectorys(subdirectory);    }}

12、获取目录中的文件

GetFiles 方法获取指定目录中的文件列表,下面是获取目录中的文件的代码段:
string path = @"C:\Temp";string[] files= Directory.GetFiles(path);foreach (string fileName in files){    Console.WriteLine(fileName);}

13、获取根目录

GetRootDirecoty 方法返回指定目录的根目录,下面是获取根目录的代码段:
string path = @"C:\Temp";string root = Path.GetDirectoryName(path);Console.WriteLine(root);

14、所有驱动器

GetLogicalDrives 方法返回系统上的所有逻辑驱动器,下面是获取所有驱动器的代码段:
string[] drives = System.IO.Directory.GetLogicalDrives();foreach (string drive in drives){    Console.WriteLine(drive);}

小结

以上是关于 Directory 类实现目录操作的内容,希望本文对您有所收获,如有不到之处,请多多包涵。


该文章在 2024/12/19 17:46:14 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved