我在服务器上有一些超过MAX_PATH
限制的文件。
我一再听说你可以通过预先挂起的\\?\列出这些文件到路径。但是,这并没有解决FindFirstFile[Ex]
及其合作伙伴的问题,因为他们使用的数据结构将文件名长度限制为MAX_PATH
。
有没有其他方法可以迭代目录结构来查找名称太长的文件?我见过这样做的实用程序,但没有一个以源代码形式提供。
请注意,我已经看过.NET BCL人员的博客条目,并按照他们提供的链接进行操作。
为了简单起见,我宁愿在C或C ++中这样做,但现在任何免费语言都可以。
赞赏代码,文档或任何有用的内容。
答案 0 :(得分:10)
我认为这里没有问题。您指的是确实将文件名长度限制为MAX_PATH
的{{3}}。但由于这只是文件名部分,并且路径被省略,因此没有限制。
在目录中,对象(文件或文件夹)的长度有限,通常为255个字符。您可以使用WIN32_FIND_DATA
的lpMaximumComponentLength
参数确定此限制的内容。如果安装在Windows中的任何卷的最大组件长度超过255,我会感到惊讶。
对GetVolumeInformation
的调用收到一个空终止字符串lpFileName
,它指定要搜索的目录和文件名(例如“* .txt”)。文档说明:
在此功能的ANSI版本中, 名称仅限于MAX_PATH 字符。将此限制扩展到 32,767个宽字符,称之为 Unicode版本的功能和 将“\\?\”添加到路径中。