【问题标题】:Effective Way to Delete File using Native Methods in C# [closed]在 C# 中使用本机方法删除文件的有效方法 [关闭]
【发布时间】:2022-01-27 05:57:27
【问题描述】:

我正在寻找一种在 C#

中以最有效且经过验证的方式使用 本机方法删除文件的方法

【问题讨论】:

标签: c# .net windows native-methods


【解决方案1】:
[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);

DeleteFileW 用于 Unicode 名称,DeleteFileA 用于 ANSI 名称。 示例代码:

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);
}

【讨论】:

  • 您能解释一下为什么要调用 Windows API 而不是 File.Delete 等 .Net 方法吗?
  • 问题涉及本机方法,而不是流行的 .NET 方法,例如 File.Delete()
  • 这取决于您对“本地”的定义。我认为任何“原生”都是 .Net 框架附带的东西。
猜你喜欢
  • 2011-01-28
  • 2010-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-18
  • 1970-01-01
  • 1970-01-01
  • 2013-07-05
相关资源
最近更新 更多