在我的应用程序中,我们要求我们必须在深度超过256个字符的情况下执行System.IO操作,在这种情况下,所有System.IO API都失败了。我们正在使用以下API。
请指导我,如果上述API的替代品可用超过256个字符,
谢谢
答案 0 :(得分:3)
BCL团队博客上有关于漫长路径的精彩系列:
它充斥着如何使用Win32 API处理长文件名的示例,以及对可能遇到的问题和陷阱的大量解释。一个例子是DeleteFile
API:
// Taken from "Part 2" of the BCL Team Blog
using System;
using System.Runtime.InteropServices;
[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool DeleteFile(string lpFileName);
public static void Delete(string fileName)
{
string formattedName = @"\\?\" + fileName;
DeleteFile(formattedName);
}
答案 1 :(得分:0)
PI Invoke。但你可能不想使用它。 UHTTP://www.pinvoke.net/default.aspx/kernel32.CreateDirectoryEx
答案 2 :(得分:0)
如果您使用Unicode版GetFullPathName,则最多支持32,767个字符。
与可用于创建目录的CreateFile函数相同。
所以我建议只找到合适的函数File Management Functions,然后确保你使用的是Unicode版本。
例如,FindFirstFile可以取代我认为的Exists
。并将其与FindNextFile结合使用,以获得GetFiles
和GetDirectories
您可能找不到Combine
的替代品,因为我认为这是.Net特定帮助,但另一方面,您应该能够轻松编写自己的替代品。