c#删除文件和目录到回收站

devtools/2025/1/18 17:45:41/

之前在c++上遇到过这个问题,折腾许久才解决了,这次在c#上再次遇到这个问题,不过似乎容易了一些,亲测代码如下,两种删除方式都写在代码中了。

直接上完整代码:

using Microsoft.VisualBasic.FileIO;
using System;
using System.IO;
using System.Runtime.InteropServices;namespace ceshiConsole
{public class FileIOHelper{[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto, Pack = 1)]public struct SHFILEOPSTRUCT{public IntPtr hwnd;[MarshalAs(UnmanagedType.U4)]public int wFunc;public string pFrom;public string pTo;public short fFlags;[MarshalAs(UnmanagedType.Bool)]public bool fAnyOperationsAborted;public IntPtr hNameMappings;public string lpszProgressTitle;}#region Dllimport[DllImport("shell32.dll", CharSet = CharSet.Auto)]public static extern int SHFileOperation(ref SHFILEOPSTRUCT FileOp);#endregion#region Constpublic const int FO_DELETE = 3;public const int FOF_ALLOWUNDO = 0x40;public const int FOF_NOCONFIRMATION = 0x10;#endregion#region Public Static Methodpublic static void DeleteFileToRecyclebin(string file, Boolean showConfirmDialog = false){SHFILEOPSTRUCT shf = new SHFILEOPSTRUCT();shf.wFunc = FO_DELETE;shf.fFlags = FOF_ALLOWUNDO;if (!showConfirmDialog){shf.fFlags |= FOF_NOCONFIRMATION;}shf.pFrom = file + '\0' + '\0';SHFileOperation(ref shf);}public static bool SendToRecycleBin(string path){bool bRet = true;try{if (File.Exists(path)){FileSystem.DeleteFile(path, UIOption.OnlyErrorDialogs, RecycleOption.SendToRecycleBin);}else if (Directory.Exists(path)){FileSystem.DeleteDirectory(path, UIOption.OnlyErrorDialogs, RecycleOption.SendToRecycleBin);}else{bRet = false;}}catch (Exception ex){Console.WriteLine($"无法将文件/目录 {path} 移动到回收站: {ex.Message}");bRet = false;}return bRet;}static void Main(string[] args){DeleteFileToRecyclebin(@"C:\Users\autumoon\Desktop\test.txt");SendToRecycleBin(@"C:\Users\autumoon\Desktop\test2.txt");}#endregion}
}


http://www.ppmy.cn/devtools/151614.html

相关文章

怎么抓取IOS手机app的网络流量,也就是iphone手机抓包

继续昨天的教程,如抓取ios手机上的https请求。今天介绍如何在抓取iphone手机上的非https请求 也就是socket通信的数据。如果在pc上我们会第一时间讲到wireshark,但是对移动设备,似乎就要复杂很多。最近研究发现的工具嗅探大师,能…

51.WPF应用加图标指南 C#例子 WPF例子

完整步骤: 先使用文心一言生成一个图标如左边使用Windows图片编辑器编辑,去除背景使用正方形,放大图片使图标铺满图片使用格式工程转换为ico格式,分辨率为最大 在资源管理器中右键项目添加ico类型图片到项目里图片属性设置为始终…

【Qt 常用控件】按钮类(QPushButton、QRadioButton、QCheckBox)

按钮控件继承自抽象类QAbstractButton。 抽象类不允许实例化对象,内部定义纯虚函数。只能通过子类继承,重写纯虚函数的方式使用。 1. QPushButton 1.1 QAbstractButton中和QPushButton相关的属性 text按钮显示文本icon按钮图标iconSize按钮图标尺寸s…

STM32 FreeRTOS中断管理

目录 FreeRTOS的中断管理 1、STM32中断优先级管理 2、FreeRTOS任务优先级管理 3、寄存器和内存映射寄存器 4、BASEPRI寄存器 5、FreeRTOS与STM32中断管理结合使用 vPortRaiseBASEPRI vPortSetBASEPRI 6、FromISR后缀 7、在中断服务函数中调用FreeRTOS的API函数需注意 F…

【Axure】1500+实用图标库

most Icon 是基于工作中常用的图标进行整理的一款高度灵活的矢量图标库(非字体图标,不需要安装字体),并在 axure 内可以右键转换成图形并修改颜色,轻松调整图标的尺寸、色调、光影效果以及背景填充等各项属性。 它在 …

【Golang 面试题】每日 3 题(三十二)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/UWz06 📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏…

基于微信小程序的校园运动场地预约系统设计与实现

一.前言 选题背景: 随着社会的进步和人们生活水平的提高,健康意识逐渐增强,越来越多的人开始关注和参与体育运动。在校园中,学生们也积极参与各种体育活动,以提升身体素质和促进全面发展。然而,由于校园运动…

Linux一键巡检

文章目录 一、巡检内容 二、巡检结果展示 三、巡检脚本 四、执行脚本 五、查看巡检报告 六、设置定时任务 一、巡检内容 [1] 系统基本信息 [2] CPU 信息 [3] 内存使用情况 [4] 磁盘使用情况 [5] 网络配置和连接 [6] 服务状态检查 [7] 安全检查 [8] 登录记录 [9] 系统日志…