Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >dotnet 将文件删除到回收站

dotnet 将文件删除到回收站

作者头像
林德熙
发布于 2022-08-07 05:23:52
发布于 2022-08-07 05:23:52
95500
代码可运行
举报
文章被收录于专栏:林德熙的博客林德熙的博客
运行总次数:0
代码可运行

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

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

添加一个帮助类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    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;
    }

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

下面添加一些测试的代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        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);
        }

尝试运行代码

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Microsoft.VisualBasic.FileIO.FileSystem.DeleteDirectory(filename or folder,
      Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs, 
        Microsoft.VisualBasic.FileIO.RecycleOption.SendToRecycleBin);

代码在github

c# - Send a File to the Recycle Bin - Stack Overflow

Delete files or folders to recycle bin in C#

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Windows API——SHFileOperation——文件操作
大家好,又见面了,我是你们的朋友全栈君。 1 int SHFileOperation( LPSHFILEOPSTRUCT lpFileOp); 如果执行成功返回0. 1 typedef struct _SHFILEOPSTRUCT { 2 HWND hwnd;//指向发送消息的窗口 3 UINT wFunc;//执行的操作 4 LPCTSTR pFrom;//源文件名 5 LPCTSTR pTo;//目标文件名 6 FILEOP_FLAGS fFlags;//操作与确认标识 7
全栈程序员站长
2022/09/09
8560
dotnet C# 使用 SHFileOperation 调用 Win32 的文件复制对话框
本文将和大家介绍如何在 dotnet C# 里面使用 SHFileOperation 调用 Windows 自带的文件复制对话框进行文件复制
林德熙
2024/08/10
1960
dotnet C# 使用 SHFileOperation 调用 Win32 的文件复制对话框
C++实现对回收站里的文件进行操作|技术创作特训营第一期
本篇文章主要为大家详细介绍了C++如何使用代码对回收站里的文件进行操作,譬如文件的删除与恢复等。
芯动大师
2023/08/06
4820
C++实现对回收站里的文件进行操作|技术创作特训营第一期
SHFileOperation删除文件夹
wFunc := FO_DELETE; //FO_COPY,FO_RENAME,FO_MOVE,FO_DELETE
全栈程序员站长
2022/09/09
1.5K0
dotnet 读 WPF 源代码笔记 WriteableBitmap 的渲染和更新是如何实现
在 WPF 框架提供方便进行像素读写的 WriteableBitmap 类,本文来告诉大家在咱写下像素到 WriteableBitmap 渲染,底层的逻辑
林德熙
2021/04/22
1K0
Python删除文件到回收站
大家好,又见面了,我是你们的朋友全栈君。 利用active python里面的shell模块可以完成删除到回收站的操作,如下: from win32com.shell import shell,shellcon
全栈程序员站长
2022/09/02
1.6K0
WPF开发-常用的路径及文件夹、文件操作
官方文档:https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/file-system/
码客说
2021/10/18
2.3K0
扫描仪对接(C#)
源代码地址:http://www.codeproject.com/Articles/171666/Twain-for-WPF-Applications-Look-Ma-No-Handles
码客说
2022/09/19
5K0
扫描仪对接(C#)
C# EPL USB 指令打印
private void btnPrinter_Click(object sender, EventArgs e) { #region ESC 热敏图像点阵像素点读取打印 //Bitmap bitmap = new Bitmap(@"D:\450X100.bmp"); //NetPOSPrinter netPOSPrinter = new NetPOSPrinter(); //n
跟着阿笨一起玩NET
2018/09/20
2.2K0
[Python攻防] 一.获取Windows主机信息、注册表、U盘历史痕迹和回收站文件
声明:本人坚决反对利用教学方法进行恶意攻击的行为,一切错误的行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解技术背后的原理,更好地进行安全防护。虽然作者是一名安全小白,但会保证每一篇文章都会很用心地撰写,希望这些基础性文章对你有所帮助,在安全路上一起前行。
Eastmount
2021/12/02
2.8K0
[Python攻防] 一.获取Windows主机信息、注册表、U盘历史痕迹和回收站文件
C# 判断文件编码
我们的项目中会包含有很多文件,但是可能我们没有注意到的,我们的文件的编码不一定是utf-8,所以可能在别人电脑运行时出现乱码。最近在做一个项目,这个项目可以把我们的文件夹里的所有文本,判断他们是什么编码,如果不是用户规定的编码,那么就告诉用户,是否要把它规范为设置的编码。
林德熙
2018/09/19
3.3K0
C# 判断文件编码
C# 判断文件编码
我们的项目中会包含有很多文件,但是可能我们没有注意到的,我们的文件的编码不一定是utf-8,所以可能在别人电脑运行时出现乱码。最近在做一个项目,这个项目可以把我们的文件夹里的所有文本,判断他们是什么编码,如果不是用户规定的编码,那么就告诉用户,是否要把它规范为设置的编码。
林德熙
2022/08/04
1.1K0
免杀工具Sharperner浅析
Sharperner是一款C#编写的自动化免杀工具,用来生成免杀的exe文件或者C++的loader,在antiscan.me上为全绿,效果可见一斑。
鸿鹄实验室
2021/07/06
1.2K0
免杀工具Sharperner浅析
WPF 打开资源管理器且选中某个文件
本文将和大家介绍如何在 Windows 系统上使用 SHOpenFolderAndSelectItems 方法打开资源管理器且选中给定的文件
林德熙
2024/11/17
3120
win10 uwp 手把手教你使用 asp dotnet core 做 cs 程序 VisualStudio创建项目引用项目创建通用结构设置控制器运行网站UWP 连接上传数据
本文是一个非常简单的博客,让大家知道如何使用 asp dot net core 做后台,使用 UWP 或 WPF 等做前台。 本文因为没有什么业务,也不想做管理系统,所以看到起来是很简单。
林德熙
2018/09/18
1.4K0
win10 uwp 手把手教你使用 asp dotnet core 做 cs 程序
            VisualStudio创建项目引用项目创建通用结构设置控制器运行网站UWP 连接上传数据
dotnet OpenXML 使用 MAUI 渲染 PPT 的面积图图表
我在做一个图表工具软件,这个软件使用 MAUI 开发。我的需求是图表的内容需要和 PPT 的图表对接,需要用到 OpenXML 解析 PPT 内容,读取到 PPT 图表元素的内容,接着使用 MAUI 渲染层绘制图表元素。图表工具软件需要在 Windows 平台和 Linux 平台上运行。在 Windows 下,我采用 WPF 应用,用来辟谣说 MAUI 不支持 WPF 应用。 在 Linux 选用 Ubuntu 系统,采用 GTKSharp 应用加上 Skia 渲染对接 MAUI 框架
林德熙
2023/04/07
2.2K0
dotnet OpenXML 使用 MAUI 渲染 PPT 的面积图图表
柠檬鸭组织样本分析
•设置防火墙规则,转发65532、65531、65529的请求到1.1.1.1•创建计划任务定时启动•写入批处理检测cmd.exe进程•如果cmd.exe进程数量大于10则重启机器
HACK学习
2021/02/01
3.4K0
JavaSE 编写第一个程序
介绍 JavaSE 基础的基本语法知识,不会包含特别难以理解或更深层次的内容,通俗易懂。本人是实战派,看着大幅篇章晦涩的理论,但是没有多少实践证明的书籍就头疼;同时如果知识东一点、西一点,跳跃性太大,不成体系,也比较麻烦。
全栈程序员站长
2022/09/14
6.8K0
JavaSE 编写第一个程序
相关推荐
Windows API——SHFileOperation——文件操作
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验