c#删除文件和目录到回收站
之前在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}
}
相关文章:
c#删除文件和目录到回收站
之前在c上遇到过这个问题,折腾许久才解决了,这次在c#上再次遇到这个问题,不过似乎容易了一些,亲测代码如下,两种删除方式都写在代码中了。 直接上完整代码: using Microsoft.VisualBasic.FileIO; using Sy…...
GESP2024年12月认证C++六级( 第三部分编程题(1)树上游走)
参考程序: #include <iostream> #include <string>using namespace std;int main() {long long n, s; // n为移动次数,s为初始节点编号string moves; // 移动指令串// 输入处理cin >> n >> s;cin >> moves;long long…...
Redis数据结构服务器
Redis数据结构服务器 什么是Redis数据结构服务器 的概念和特点 是一个开源(BSD许可),内存中的数据结构存储服务器,可用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如字符串(strings)…...
【向量数据库 Milvus】centos8源码安装和部署 Milvus 2.5.3
在龙晰操作系统(LoongArch 架构)的 CentOS 8 环境中通过源码安装和部署 Milvus 2.5.3 可能会面临一些挑战,因为 Milvus 的官方支持主要集中在 x86 和 ARM 架构上。以下是一个详细的安装步骤,但需要注意,某些依赖项可能…...
MySQL数据库(SQL分类)
SQL分类 分类全称解释DDLData Definition Language数据定义语言,用来定义数据库对象(数据库,表,字段)DMLData Manipulation Language数据操作语言,用来对数据库表中的数据进行增删改DQLData Query Languag…...
C++实现设计模式---原型模式 (Prototype)
原型模式 (Prototype) 原型模式 是一种创建型设计模式,它通过复制现有对象来创建新对象,而不是通过实例化。 意图 使用原型实例指定要创建的对象类型,并通过复制该原型来生成新对象。提供一种高效创建对象的方式,尤其是当对象的…...
鸿蒙面试 2025-01-10
写了鉴权工具,你在项目中申请了那些权限?(常用权限) 位置权限 : ohos.permission.LOCATION_IN_BACKGROUND:允许应用在后台访问位置信息。 ohos.permission.LOCATION:允许应用访问精确的位置信息…...
Linux Top 命令 load average 指标解读
前言 作为平台开发的同学,维护平台稳定性是我们最基本的工作职责,下面主要介绍下top 命令里 ,load average 这个指标如何去衡量机器负载程度。 概念介绍 load average 是系统在过去 1 分钟、5 分钟、15 分钟 的平均负载,它表示运…...
31_搭建Redis分片集群
Redis的主从复制模式和哨兵模式可以解决高可用、高并发读的问题。但是依然有两个问题没有解决:海量数据存储问题、高并发写的问题。由于数据量过大,单个master复制集难以承担,因此需要对多个复制集进行集群,形成水平扩展每个复制集只负责存储整个数据集的一部分,这就是Red…...
客户案例 | Ansys与索尼半导体解决方案公司合作推进自动驾驶汽车基于场景的感知测试
该合作使OEM厂商和一级供应商能够可靠地评估和验证 ADAS/AV 功能在各种天气和照明条件下的性能 主要亮点 Ansys AVxcelerate Sensors™自动驾驶汽车(AV)传感器仿真软件,可实现面向基于场景的感知测试的实时多光谱摄像头仿真 利用AVxcelerat…...
c#-Halcon入门教程——标定
Halcon代码 read_image (NinePointCalibration, D:/Desktop/halcon/ca74d-main/九点标定/NinePointCalibration.gif)rgb1_to_gray (NinePointCalibration, GrayImage)get_image_size (GrayImage, Width, Height) dev_display (GrayImage)* 获取当前显示的窗口句柄 dev_get_win…...
MC1.12.2 macOS高清修复OptiFine运行崩溃
最近在玩RLCraft,在windows中运行正常的,移植到macOS中发现如果加载OptiFine模组就会崩溃 报错日志 报错日志如下,其中已经包含了各种版本信息,我就不单独说明了。这里说一下,报错的时候用的是oracle jdk x64的&…...
精选2款.NET开源的博客系统
前言 博客系统是一个便于用户创建、管理和分享博客内容的在线平台,今天大姚给大家分享2款.NET开源的博客系统。 StarBlog StarBlog是一个支持Markdown导入的开源博客系统,后端基于最新的.Net6和Asp.Net Core框架,遵循RESTFul接口规范&…...
转运机器人在物流仓储行业的优势特点
在智能制造与智慧物流的浪潮中,一款革命性的产品正悄然改变着行业的面貌——富唯智能转运机器人,它以卓越的智能科技与创新的设计理念,引领着物流领域步入一个全新的高效、智能、无人的时代。 一、解放双手,重塑物流生态 富唯智能…...
简识MySQL的InnoDB Locking锁的分类
( 参考官方网页: MySQL :: MySQL 5.7 Reference Manual :: 14.7.1 InnoDB Locking) 一、InnoDB Locking锁的分类: 锁的分类英文缩写共享锁Shared LocksS排他锁Exclusive LocksX意向共享锁Intention Shared LocksIS意向排他锁Int…...
如何通过openssl生成.crt和.key
生成 .crt(证书文件)和 .key(私钥文件)的过程通常涉及使用加密工具或库来创建密钥对,并生成证书请求,最终由证书颁发机构(CA)或自签名生成证书。以下是生成 .crt 和 .key 文件的详细…...
.NetCore 使用 NPOI 读取带有图片的excel数据
在.NetCore使用NPOI插件进行批量导入时,获取Excel中的所有的图片数据,存到集合中。 1.定义类PictureData 代码如下: public class PictureData { public byte[] Data { get; set; } } 2.数据集引用 using NPOI.XSSF.UserModel; usin…...
linux上使用update-alternatives来选择软件版本
比如我在linux系统上安装多个版本的gcc /usr/local/gcc-4.8.2/ /usr/local/gcc-8.4.0/ /usr/local/gcc-9.4.0/我要根据需要来切换系统环境下的gcc命令的版本,我可以先 update-alternatives --install /usr/bin/gcc gcc /usr/local/gcc-4.8.2/bin/gcc 1 update-alt…...
【Elasticsearch复合查询】
Elasticsearch复合查询 在Elasticsearch中,复合查询(Compound Queries)是用来封装其他复合查询或叶子查询的查询类型。它们的主要目的是组合这些查询的结果和分数、改变它们的行为或者从查询上下文切换到过滤上下文。 一个常见的复合查询是…...
Java List去重:Stream、HashMap与TreeSet对比分析
在处理包含重复元素的List时,高效地去除重复项是提高数据质量的关键步骤。本文将详细介绍如何运用Java 8 Stream API、HashMap以及TreeSet来实现List去重,并比较它们之间的优缺点及适用场景。 1. 使用Stream API去重 List<String> duplicates …...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
如何配置一个sql server使得其它用户可以通过excel odbc获取数据
要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据,你需要完成以下配置步骤: ✅ 一、在 SQL Server 端配置(服务器设置) 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到:SQL Server 网络配…...
人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型
在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重,适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解,并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...
