西西软件网:最安全的绿色手机软件下载站!
游戏
您当前所在位置:首页 > 软件教程 > 软件教程

C#创建文件夹方法 C#如何新建一个目录

时间:2026-06-06 10:27 来源:西西软件网 作者:佚名

c#创建文件夹方法 c#如何新建一个目录

Directory.CreateDirectory 会自动处理已存在目录

调用 Directory.CreateDirectory 创建文件夹时,即使目标路径已存在,它也不会报错,而是直接返回已有 DirectoryInfo 对象。这点和 mkdir 命令或某些脚本语言行为不同——你不需要提前用 Directory.Exists 判断再分支处理。

常见误操作是写成:

if (!Directory.Exists(path))
{
    Directory.CreateDirectory(path);
}

这多了一次磁盘查询,纯属冗余。直接调用 Directory.CreateDirectory(path) 即可。

路径中父目录不存在时会递归创建

Directory.CreateDirectory 的关键特性是「自动创建完整路径链」。比如 "C:\A\B\C\D" 全不存在,它会逐级建好 A、B、C、D 四层。

注意点:

  • 路径必须是合法的本地路径或 UNC 路径(如 "\\server\share\dir"),不支持相对路径带 .. 的复杂跳转(如 "..\..\out")除非当前工作目录明确
  • 如果中间某级是只读文件夹(罕见但可能),创建会失败并抛出 UnauthorizedAccessException
  • 路径末尾加不加 \ 都可以,.NET 内部会标准化

权限不足或盘符不存在时的典型错误

运行时最常遇到两类异常:

UnauthorizedAccessException:当前用户对目标驱动器或父目录无写入权限(尤其在 C:Program Files 或系统保护路径下)

IOException:盘符不存在(如 "Z:\myfolder" 但 Z 盘未映射)、路径含非法字符(, |, *, ? 等)、或长度超 260 字符(旧版 Windows 默认限制)

建议做法:

  • 捕获具体异常类型,而非泛泛的 Exception
  • 对用户提示时,把 path 变量值也打出来,方便排查是哪一级出问题
  • 若需长路径支持,确保项目启用 longPathAware=true 并使用 .NET Core 3.1+ 或 .NET 5+

需要判断是否真正新建了目录?用 DirectoryInfo.Exists 配合时间戳

有时业务逻辑依赖“本次是否首次创建”,而 Directory.CreateDirectory 不提供布尔返回值。可行方案是创建后检查 LastWriteTimeUtc 是否接近当前时间(误差几秒内),或更稳妥地:先调用 Directory.Exists 记录状态,再创建,最后比对。

示例逻辑:

bool wasNew = !Directory.Exists(path);
Directory.CreateDirectory(path);
if (wasNew)
{
    // 执行初始化操作,如写入默认配置文件
}

注意:不要依赖 Directory.GetCreationTime,NTFS 下该时间可能被复制/移动操作重置,不可靠。

真正容易被忽略的是跨网络路径的延迟和权限继承细节——比如在 SMB 共享上创建目录,实际生效可能滞后,且子目录默认继承父级 ACL,未必符合预期。这类场景建议加上日志记录和简易验证(如立刻尝试写入一个临时文件)。


上面的文章就是C#创建文件夹方法 C#如何新建一个目录的内容了,文章的版权归原作者所有,如有侵犯您的权利,请及时联系本站删除,更多相关directory.createdirectory的资讯,请关注收藏西西下载站。

玩家评论

精品推荐