当前位置:首页 > 技术 > 正文内容

C# 中文件与目录操作:重命名、属性访问及类型对比

访客 技术 2026年7月2日 1

1. 重命名目录

在 C# 中,可以通过调用 VisualBasic 运行时库来实现文件夹的重命名。尽管属于 VB 命名空间,但它在 C# 项目中完全可用。

string oldPath = @"C:\test";
Microsoft.VisualBasic.FileIO.FileSystem.RenameDirectory(oldPath, "newFolderName");

上述代码将 C:\test 目录更名为 newFolderName,即路径变为 C:\newFolderName

2. 重命名单个文件

同样使用 RenameFile 方法完成文件名称变更,注意新名称需包含扩展名。

string filePath = @"C:\test2\test.txt";
Microsoft.VisualBasic.FileIO.FileSystem.RenameFile(filePath, "updated.txt");

该操作会把原文件 test.txt 改名为 updated.txt,保持在同一目录下。

3. 获取目录信息对象

通过 DirectoryInfo 类可以获取指定路径的目录实例,并访问其元数据。

string dirPath = @"C:\test";
DirectoryInfo dirInfo = new DirectoryInfo(dirPath);

一旦创建了 DirectoryInfo 实例,即可读取或修改其属性,如创建时间、权限等。

4. 获取文件信息对象

使用 FileInfo 类表示一个具体的文件,可用于查询和操作文件特性。

string fileFullPath = @"C:\test2\test.txt";
FileInfo fileInfo = new FileInfo(fileFullPath);

此对象支持获取大小、只读状态、最后修改时间等信息。

5. 遍历子项:文件与子目录

从一个目录中提取其直接子项(不递归深入):

DirectoryInfo rootDir = new DirectoryInfo(@"C:\test");

// 获取所有直接子文件
FileInfo[] files = rootDir.GetFiles();

// 获取所有直接子目录
DirectoryInfo[] subDirs = rootDir.GetDirectories();

// 获取所有文件系统条目(包括文件和目录)
FileSystemInfo[] allItems = rootDir.GetFileSystemInfos();

这些方法仅返回当前层级的内容,不会进入嵌套层级。

6. DirectoryInfo 类详解

DirectoryInfoSystem.IO 命名空间中的密封类,用于执行高级目录管理任务,例如创建、移动和删除目录。

常用属性

  • Exists:判断目录是否存在。
  • FullName:返回完整路径字符串。
  • Name:获取目录名(不含父路径)。
  • Parent:获取上级目录对象。
  • CreationTimeUtc:以 UTC 格式获取创建时间。
  • LastWriteTime:最后一次写入的时间戳。

核心方法

  • Create():创建目录(若不存在)。
  • CreateSubdirectory(string):新建子目录。
  • Delete(bool recursive):删除目录;传入 true 可连同内容一并清除。
  • MoveTo(string newPath):移动目录至新位置。
  • GetDirectories()GetFiles():分别列出子目录和文件。
  • EnumerateDirectories():延迟加载方式遍历子目录,适合大数据集。

7. FileInfo 类功能概述

FileInfo 提供对单个文件的操作接口,适用于需要多次处理同一文件的场景。

关键属性

  • Length:文件字节长度。
  • IsReadOnly:是否设置为只读。
  • DirectoryName:所在目录的完整路径。
  • Extension:文件扩展名。

常用方法

  • Create():创建一个新的空文件,返回可写的 FileStream
  • CopyTo(string, bool):复制文件到目标路径,第二个参数决定是否覆盖已有文件。
  • MoveTo(string):将文件移动并可更名。
  • Delete():安全删除文件(无提示)。
  • Replace(string, string):用当前文件替换另一个文件,并生成备份。

8. File vs Directory vs FileInfo vs DirectoryInfo 对比分析

类别 类型特征 性能特点 适用场景
File, Directory 静态类,提供一次性操作方法 每次调用都进行安全检查,适合单一操作 只需执行一次复制、删除等动作时使用
FileInfo, DirectoryInfo 实例类,需先构造对象 避免重复的安全验证,适合多次操作 连续执行多个操作(如读取+修改+保存)时更高效

总结:如果只是简单地删除一个文件,File.Delete(path) 更简洁;但如果要先检查是否存在、再读取长度、然后重命名,使用 FileInfo 实例更为合理。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。