在 C# 中使用本机方法删除文件的有效方法
Effective Way to Delete File using Native Methods in C#
我正在寻找一种使用 Native Methods 删除文件 的方法,在 中以最有效和经过验证的方式C#
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool DeleteFile(string lpFileName);
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool DeleteFileA([MarshalAs(UnmanagedType.LPStr)]string lpFileName);
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool DeleteFileW([MarshalAs(UnmanagedType.LPWStr)]string lpFileName);
对 Unicode 名称使用 DeleteFileW,对 ANSI 名称使用 DeleteFileA。
示例代码:
String filePath = @"C:\Data\MyFile.txt";
bool deleted = DeleteFileW(filePath);
if (!deleted)
{
int lastError = Marshal.GetLastWin32Error();
Console.WriteLine("Failed to delete '{1}': error={0}", lastError, filePath);
}
我正在寻找一种使用 Native Methods 删除文件 的方法,在 中以最有效和经过验证的方式C#
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool DeleteFile(string lpFileName);
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool DeleteFileA([MarshalAs(UnmanagedType.LPStr)]string lpFileName);
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool DeleteFileW([MarshalAs(UnmanagedType.LPWStr)]string lpFileName);
对 Unicode 名称使用 DeleteFileW,对 ANSI 名称使用 DeleteFileA。 示例代码:
String filePath = @"C:\Data\MyFile.txt";
bool deleted = DeleteFileW(filePath);
if (!deleted)
{
int lastError = Marshal.GetLastWin32Error();
Console.WriteLine("Failed to delete '{1}': error={0}", lastError, filePath);
}