我正在编写一个使用System.IO方法处理文件和目录的C#程序。其中一些方法包括Directory.GetDirectories,Directory.GetFiles和Path.GetDirectoryName,如果路径太长,则所有这些方法都可能抛出PathTooLongException异常。我的第一个问题是,Microsoft .NET Framework是否强制执行路径的最大长度,就像在C++中调用Windows API一样? 在C#中,超过MAX_PATH的字符串路径会引发PathTooLongException吗?
我应该使用这个吗?
还是这个?
我应该使用这个吗?
string getFolderName(string path)
{
if (string.IsNullOrWhiteSpace(path))
return string.Empty;
if (path.Length > 260)
{
System.Diagnostics.Debug.WriteLine("Path is too long.");
return string.Empty;
}
string folderName = System.IO.Path.GetDirectoryName(path);
return folderName;
}
还是这个?
string getFolderName(string path)
{
if (string.IsNullOrWhiteSpace(path))
return string.Empty;
string folderName = string.Empty;
try {
folderName = System.IO.Path.GetDirectoryName(path);
}
catch (System.IO.PathTooLongException)
{
System.Diagnostics.Debug.WriteLine("Path is too long.");
}
return folderName;
}
MAX_PATH
的值呢?捕获PathTooLongException
异常几乎一定更可靠,因为它是内置在你调用的代码中的。请注意,如果你不想处理这个异常,你甚至不需要 try/catch;只需让它向上传播到调用方即可。 - Robert HarveyMAX_PATH
限制,因此您不应人为地限制路径字符串。只需让操作系统在需要时失败,并在必要时捕获错误即可。 - Remy Lebeau