Skip to content

Commit b3bcbd8

Browse files
committed
fix(extensions): 修复 DirectoryExtensions.CreateAsDirectory 无限递归 bug
- 移除错误的递归调用 CreateAsDirectory(path, true) - 直接使用 Directory.CreateDirectory 创建目录 - 添加空路径检查
1 parent b376740 commit b3bcbd8

1 file changed

Lines changed: 9 additions & 5 deletions

File tree

GameFrameX.Foundation.Extensions/DirectoryExtensions.cs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,10 @@ public static class DirectoryExtensions
4343
/// <param name="isFile">是否为文件路径,如果为true,则创建文件所在的目录。默认为false。</param>
4444
/// <exception cref="ArgumentNullException">当path为null时抛出。</exception>
4545
/// <remarks>
46-
/// 如果路径不存在,会递归创建所有必需的父目录
47-
/// 当isFile为true时,会自动获取文件所在目录路径
48-
/// 支持相对路径和绝对路径
49-
/// 如果目录已存在,则不会进行任何操作
46+
/// 此方法使用 <see cref="Directory.CreateDirectory"/> 实现,该方法会自动递归创建所有必要的父目录。
47+
/// 当isFile为true时,会自动获取文件所在目录路径
48+
/// 支持相对路径和绝对路径
49+
/// 如果目录已存在,则不会进行任何操作
5050
/// </remarks>
5151
public static void CreateAsDirectory(this string path, bool isFile = false)
5252
{
@@ -55,11 +55,15 @@ public static void CreateAsDirectory(this string path, bool isFile = false)
5555
if (isFile)
5656
{
5757
path = Path.GetDirectoryName(path);
58+
if (string.IsNullOrEmpty(path))
59+
{
60+
return;
61+
}
5862
}
5963

6064
if (!Directory.Exists(path))
6165
{
62-
CreateAsDirectory(path, true);
66+
// Directory.CreateDirectory 会递归创建所有父目录
6367
Directory.CreateDirectory(path);
6468
}
6569
}

0 commit comments

Comments
 (0)