最佳答案
我正在开发一个应用程序,它遍历某些目录中的每个文件,并对这些文件执行一些操作。其中,我必须检索文件大小和修改该文件的日期。
有些文件的全名(目录 + 文件名)太长,我不能使用。NET 框架 FileInfo
,限制为 MAX_PATH
(260个字符)。许多网络资源建议使用原生的 Win32函数通过 P/Invoke 访问文件的名称太长。
目前,Win32函数似乎出现了完全相同的问题。例如,GetFileAttributesEx
(kernel32.dll)失败,Win32错误3 ERROR _ PATH _ NOT _ FOUND270字节的路径。
同样的文件可以从 Notepad2成功地打开,并成功地用文件资源管理器显示(但是 Visual Studio 2010因为259个字符的限制而无法打开它)。
当文件路径长度为270个字符时,我如何才能访问文件?
备注:
删除或忽略文件路径长度超过259个字符的文件不是解决方案。
我只想寻找与 Unicode 兼容的解决方案。
该应用程序将在 Windows2008/Vista 或更高版本下运行,并安装.NETFramework4。
令人惊讶的是,微软 Word 2007失败了,抱怨在没有软盘驱动器的计算机上“软盘太小”,或者在剩下4GB 内存时“内存不足”,或者最后抱怨“防病毒软件需要更新”。他们会不会有一天停止显示这种愚蠢的毫无意义的错误,至少在像微软 Office 这样的关键产品?