克服MAX_PATH文件名长度

时间:2019-06-14 10:08:43

标签: c++ windows fopen file-attributes long-filenames

我已经阅读了很多有关此主题的文档,但是似乎无法弄清楚。

原因是我必须处理可能比MAX_PATH参数长的文件路径,导致很多问题

我已经用ANSI等效项(GetFileAttributesA替换了UNICODE之类的所有GetFileAttributesW函数,以支持带有前缀的扩展文件路径长度: \\?\

但是,我还需要检查例如文件路径是否为符号链接,并且我需要知道文件大小,上次修改日期等。

为此,我使用stat函数,如下所示:

if (fstat(LongFilePath, &file_info) == 0) //THIS FAILS WITH THE ENAMETOOLONG FOR LONG FILEPATHS

因此,这里再次出现问题是由于文件名太长(超过ENAMETOOLONG)而导致的MAX_PATH错误。

因此,我发现我可以使用fstat通过其描述符访问文件。但是,要获取描述符,我需要使用fopen,它也有ENAMETOOLONG的限制。

所以,我的问题是。对于超过stat的文件路径,如何获取我需要的文件信息(符号链接,文件大小,最后修改的....,如MAX_PATH提供的那样)

0 个答案:

没有答案