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

我正在开发一个应用程序,该应用程序遍历某些目录中的每个文件,并对这些文件执行一些操作。除其他外,我必须检索文件大小和修改此文件的日期。

某些文件全名(目录+文件名)太长,我无法使用.NET Framework FileInfo,它被限制为MAX_PATH(260个字符)。许多Web来源建议通过P / Invoke使用本机Win32函数来访问名称过长的文件。

当前,Win32函数似乎会出现完全相同的问题。例如对于GetFileAttributesEx(270字节)的路径(kernel32.dll)失败,并出现Win32错误3 ERROR_PATH_NOT_FOUND。

可以从Notepad2成功打开相同的文件,并使用Windows资源管理器成功显示该文件(例如,由于259个字符的限制¹,Visual Studio 2010无法打开它)。

文件路径为270个字符长时,我该怎么办才能访问文件?

笔记:

  • 删除或忽略文件路径长度超过259个字符的文件不是解决方案。

  • 我仅在寻找与Unicode兼容的解决方案。

  • 该应用程序将在Windows 2008 / Vista或更高版本(安装了.NET Framework 4)下运行。


¹令人惊讶的是,Microsoft Word 2007失败,抱怨没有软盘驱动器的计算机上的“软盘太小”,或者当剩余4 GB的RAM时抱怨“ RAM内存不足”,或者最后是“需要更新防病毒软件”。他们是否会停止一天至少在诸如Microsoft Office之类的关键产品中显示如此愚蠢的毫无意义的错误?


Helenr
浏览 3064回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP