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