c#为长文件路径调用Win32 API?

我如何为长文件路径调用Win32 API,我唯一想做的就是获取该目录中所有文件的列表(recursivly)

如果你想使用Win32调用,你首先必须使用DllImport来导入内核,语法就像这样,你必须为你想要使用的每个方法执行此操作(这是所有未经测试的伪代码,只有描述概念),代码示例将您的路径转换为UNC路径,以便您可以拥有长文件路径:

using Microsoft.Win32.SafeHandles; ... [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)] static extern SafeHandleMinusOneIsInvalid FindFirstFileW(string lpFileName, IntPtr lpFindFileData); ... public String FindFirstFile(string filepath) { // If file path is disk file path then prepend it with \\?\ // if file path is UNC prepend it with \\?\UNC\ and remove \\ prefix in unc path. if (filepath.StartsWith(@"\\")) filepath = @"\\?\UNC\" + filepath.Substring(2, filepath.Length - 2); else filepath = @"\\?\" + filepath; ... SafeHandleMinusOneIsInvalid ret = FindFirstFileW(filepath, lpFindFileData); ... } 

在调用FindFirstFile之后,必须为目录中的下一个文件调用FindNextFile,然后最后调用FindClose; 有关如何使用Win32内核列出目录中的文件的完整示例,请查看此处