服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - dotnet如何将文件删除到回收站

dotnet如何将文件删除到回收站

2022-07-14 08:23lindexi C#

这篇文章主要给大家介绍了关于dotnet如何将文件删除到回收站的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用dotnet具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

前言

默认删除文件的时候 File.Delete 是将文件永久删除,如果是一些文档,建议删除到回收站,这样用户可以自己还原 通过 SHFileOperation 可以将文件放在回收站

本文提供的方法暂时只能在 x86 程序使用,此方法暂时不适合 dotnet core 程序

添加一个帮助类

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public static class RecycleBin
{
 public static void DeleteToRecycleBin(string file)
 {
  var shf = new SHFILEOPSTRUCT
  {
   wFunc = FO_DELETE,
   fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMATION,
   // pFrom 需要在字符串后面加两个 \0 才可以 https://docs.microsoft.com/en-us/windows/desktop/api/shellapi/ns-shellapi-_shfileopstructa
   pFrom = file + "\0"
  };
  SHFileOperation(ref shf);
 }
 
 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto, Pack = 1)]
 private struct SHFILEOPSTRUCT
 {
  public int hwnd;
  [MarshalAs(UnmanagedType.U4)] public int wFunc;
  public string pFrom;
  public string pTo;
  public short fFlags;
  [MarshalAs(UnmanagedType.Bool)] public bool fAnyOperationsAborted;
  public int hNameMappings;
  public string lpszProgressTitle;
 }
 
 [DllImport("shell32.dll", CharSet = CharSet.Auto)]
 private static extern int SHFileOperation(ref SHFILEOPSTRUCT FileOp);
 
 private const int FO_DELETE = 3;
 private const int FOF_ALLOWUNDO = 0x40;
 private const int FOF_NOCONFIRMATION = 0x10;
}

这个类里面只有一个公开方法,要求传入一个文件

下面添加一些测试的代码

?
1
2
3
4
5
6
7
8
9
10
11
12
static void Main(string[] args)
{
 var folder = @"D:\lindexi\github\";
 var file = Path.Combine(folder, "欢迎访问我博客 blog.lindexi.com 里面有大量 UWP WPF 博客.txt");
 Directory.CreateDirectory(folder);
 if (!File.Exists(file))
 {
  File.WriteAllText(file, "欢迎访问我博客 blog.lindexi.com 里面有大量 UWP WPF 博客");
 }
 
 RecycleBin.DeleteToRecycleBin(file);
}

尝试运行代码

dotnet如何将文件删除到回收站

如果可以引用Microsoft.VisualBasic那么写起来就很清真

?
1
2
3
Microsoft.VisualBasic.FileIO.FileSystem.DeleteDirectory(filename or folder,
  Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs,
  Microsoft.VisualBasic.FileIO.RecycleOption.SendToRecycleBin);

代码在github

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。

原文链接:https://lindexi.gitee.io/post/dotnet-将文件删除到回收站.html

延伸 · 阅读

精彩推荐
  • C#C#使用SqlDataAdapter对象获取数据的方法

    C#使用SqlDataAdapter对象获取数据的方法

    这篇文章主要介绍了C#使用SqlDataAdapter对象获取数据的方法,结合实例形式较为详细的分析了SqlDataAdapter对象获取数据具体步骤与相关使用技巧,需要的朋友可...

    礼拜一5022021-11-14
  • C#C# 获取当前年份的周期及周期所在日期范围(推荐)

    C# 获取当前年份的周期及周期所在日期范围(推荐)

    这篇文章主要介绍了C# 获取当前年份的周期,周期所在日期范围 ,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下...

    有创软件工作室5652022-02-23
  • C#C#生成注册码的实例代码

    C#生成注册码的实例代码

    C#生成注册码的实例代码,下面是一个小例子,需要的朋友可以参考一下...

    C#教程网5592020-12-18
  • C#C#利用性能计数器监控网络状态

    C#利用性能计数器监控网络状态

    这篇文章主要为大家详细介绍了C#利用性能计数器监控网络状态的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    飞翔的月亮9292021-12-18
  • C#C# 数据库链接字符串加密解密工具代码详解

    C# 数据库链接字符串加密解密工具代码详解

    本文通过代码给大家介绍C# 数据库链接字符串加密解密工具的相关知识,实现思路大概是使用两个数对连接字符串进行加密,再用这两个数进行解密,具体...

    begrateful8592022-02-23
  • C#C#遍历文件夹获取指定后缀名文件

    C#遍历文件夹获取指定后缀名文件

    这篇文章主要为大家详细介绍了C#遍历文件夹获取指定后缀名文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    cell0065622022-07-14
  • C#C#实现简单的汽车租赁系统

    C#实现简单的汽车租赁系统

    这篇文章主要为大家详细介绍了C#实现汽车租赁系统的具体实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    天尽头的那片海3902021-11-21
  • C#C#控件picturebox实现画图功能

    C#控件picturebox实现画图功能

    这篇文章主要为大家详细介绍了C#控件picturebox实现画图功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    无名小卒19903912022-03-01