gpt4 book ai didi

c# - 最好检查长度是否超过 MAX_PATH 或捕获 PathTooLongException?

转载 作者:行者123 更新时间:2023-11-30 19:40:25 24 4
gpt4 key购买 nike

我正在编写一个 C# 程序,它使用 System.IO 方法来处理文件和目录。其中一些方法包括 Directory.GetDirectoriesDirectory.GetFilesPath.GetDirectoryName,它们都可以抛出 PathTooLongException 如果路径太长则异常。我的第一个问题是 Microsoft .NET Framework 是否强制执行路径的最大长度,就像在 C++ 中调用 Windows API 一样? C# 中超过 MAX_PATH 的路径(在 string 中)是否会导致抛出 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;
}

最佳答案

更好的是判断调用。

捕获异常比测试条件并完全避免异常要慢得多。但是,除非您要遇到大量异常,否则性能差异根本不重要。

很难想象您会遇到大量路径太长错误的情况,除非您尝试执行某些操作,将树复制或移动到已经很深的目录节点中。在这种情况下,您最好预先测试所有内容,这样您就不会创建会在中间失败的大型缓慢操作。

但是,无论如何,硬编码 260 并不是一个好主意,因为 previous answer显示。

没有内置的 windows 函数可以给出给定系统的真实答案,但您可以在开始操作之前在用户系统上通过反复试验(可能是二进制搜索)简单地确定答案。

但是,如果您阅读我引用的文章,您会发现您可以轻松地在程序中创建比在 Windows 中运行得更好的路径。一旦达到 255 个字符,Windows 资源管理器就会出现问题,长话短说,如果您有任何选择,我建议最多限制为 255 个。

关于c# - 最好检查长度是否超过 MAX_PATH 或捕获 PathTooLongException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23588944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com