我正在考虑在Windows应用程序中处理更长的文件路径。
当前,我有一个文本框(编辑框),用户可以在其中输入绝对文件路径。然后,我使用GetWindowText
将键入的文件路径读入声明为这样的字符串中:TCHAR FilePath[MAX_PATH];
显然,这里我依赖于MAX_PATH
常量,该常量将我限制为260个字符。因此,要处理更长的文件/路径名称,我可以像这样扩展我的TCHAR数组:TCHAR FilePath[32767];
。
或者,还有更好的方法?我可以使用可变长度数组吗? (TCHAR FilePath[];
在C++中甚至可能吗?-抱歉,我对此还很陌生)。
谢谢高级!
这是我上面提到的全部代码片段:
TCHAR FilePath[MAX_PATH];
ZeroMemory(&FilePath, sizeof(FilePath));
GetWindowText(hWndFilePath, FilePath, MAX_PATH);
最佳答案
Windows上的文件路径有很多限制。默认情况下,路径不能超过260个字符,这是MAX_PATH
常数的作用。
但是,可以通过在路径前面加上“\\?\”前缀来访问更长的路径(有一定限制)。但是,使用“\\?\”前缀的局限通常会超过其好处:
LoadLibrary
始终会失败)老实说,第2点才是真正的杀手er:使用“\\?\”前缀会给自己带来各种麻烦,如果走那条路,基本上必须自己重新实现Win32规范化规则。
因此,我的建议是坚持使用260的限制。至少直到更好的平台支持更长的路径为止。