Tag: 互操作性的

如何处理名称超过259个字符的文件?

我正在研究一个应用程序,它遍历某些目录中的每个文件,并对这些文件执行一些操作。 其中,我必须检索文件的大小和文件修改的date。 某些文件全名(目录+文件名)太长,我无法使用.NET Framework FileInfo ,它仅限于MAX_PATH (260个字符)。 许多Web源build议通过P / Invoke使用本机Win32函数来访问名称太长的文件。 目前,Win32函数似乎也出现了完全相同的问题。 例如, GetFileAttributesEx (kernel32.dll)失败,Win32错误3 ERROR_PATH_NOT_FOUND为270个字节的path。 同样的文件可以成功地从记事本2打开,并成功地显示在Windows资源pipe理器(但Visual Studio 2010例如由于259个字符的限制¹没有打开它)。 如果文件path长度为270个字符,我能做些什么来访问文件? 笔记: 删除或忽略文件path长度超过259个字符的文件不是解决scheme。 我只在寻找兼容Unicode的解决scheme。 该应用程序将在安装了.NET Framework 4的Windows 2008 / Vista或更高版本下运行。 ¹令人惊讶的是,Microsoft Word 2007失败了,抱怨说没有任何软盘的计算机上的“软盘太小”,或者剩下4GB的RAM时,“RAM内存不足” “杀毒软件需要更新”。 他们是否会停留一天,至less在诸如Microsoft Office这样的关键产品中显示这样愚蠢的毫无意义的错误?