C#删除文件和文件夹到回收站
c# 如何将文件删除到回收站(文件操作)
长空玮
很多一部分网上回答都是调用System.VisualBasic的,这部分我就不粘了,毕竟不是使用VB的。以下2种方法基本相同,主要是鉴于构造不同,决定都附上。
1.(http://www.dotblogs.com.tw/larrynung/archive/2012/09/25/75026.aspx?fid=43791)
using System;
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);}#endregion}}
2.该方法转载太多,就找了个百度的链接了(http://zhidao.baidu.com/link?url=jnBCVYOf4yhGdf_YjDFZZQca1EsBixJ4LB1e8lmKotTMjrVI2StNMkswmSlQKUrIkA1_O9RMFsnUd9f_CYWTXa)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace ceshiConsole
{
public class Cleaner
{
private const int FO_DELETE = 0x3;
private const ushort FOF_NOCONFIRMATION = 0x10;
private const ushort FOF_ALLOWUNDO = 0x40;
[DllImport("shell32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
private static extern int SHFileOperation([In, Out] _SHFILEOPSTRUCT str);
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public class _SHFILEOPSTRUCT
{
public IntPtr hwnd;
public UInt32 wFunc;
public string pFrom;
public string pTo;
public UInt16 fFlags;
public Int32 fAnyOperationsAborted;
public IntPtr hNameMappings;
public string lpszProgressTitle;
}
public static int Delete(string path)
{
_SHFILEOPSTRUCT pm = new _SHFILEOPSTRUCT();
pm.wFunc = FO_DELETE;
pm.pFrom = path + '\0';
pm.pTo = null;
pm.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMATION;
return SHFileOperation(pm);
}
}
}
以上在ceshiConsole项目中实现。
以上2中方法的主要区别在于,前者使用的是struct SHFILEOPSTRUCT,后者使用的是class _SHFILEOPSTRUCT。与VB中FileIO.FileSystem.DeleteFile的区别在于,CS调用删除时,如果出错(比如文件不存在,etc)时,不报Exception异常,而是通过SHFileOperation的返回值来区别错误(异常)类型的;而VB报异常。
附:
1.关于SHFileOperation函数的补充
2.C# 删除移动文件(附带弹窗和进度提示)
C#删除文件和文件夹到回收站
如果使用C#代码来删除文件或是文件夹。会将文件和文件夹直接删除,而不是删除到回收站。可以调用Microsoft.VisualBasic.dll提供的方法。
首先对项目添加名为Microsoft.VisualBasic.dll的引用,然后添加命名空间
using Microsoft.VisualBasic.FileIO;
最后示例代码如下:
using System;
using Microsoft.VisualBasic.FileIO;
names paceleaver{class Program{static void Main(string[]args) {Console.WriteLine("删除文件到回收站");stringfilepath="leaver.txt";FileSystem.DeleteFile(filepath,UIOption.OnlyErrorDialogs,RecycleOption.SendToRecycleBin);Console.WriteLine("删除文件完成");Console.WriteLine("删除文件夹到回收站");stringdirpath="leaver";FileSystem.DeleteDirectory(dirpath,UIOption.OnlyErrorDialogs,RecycleOption.SendToRecycleBin);Console.WriteLine("删除文件夹完成");}}
}
很简单。。就不多说了。。
C#删除文件和文件夹到回收站相关推荐
- php删除到回收站代码,如何找回回收站删除的文件PHP,删除文件与文件夹操作
如何找回回收站删除的文件 PHP 删除文件与文件夹操作 unlink与rmdir这两个函数的使用 先看一下代码 代码如下: function deldir($dir) { //先删除目录下的文件: $ ...
- php的回收站怎么做,如何找回回收站删除的文件 PHP,删除文件与文件夹操作
如何找回回收站删除的文件 PHP 删除文件与文件夹操作 unlink与rmdir这两个函数的使用 先看一下代码 代码如下: function deldir($dir) { //先删除目录下的文件: $ ...
- 在计算机窗口中什么中的文件不能被删除,在Windows操作系统中,“回收站”可以恢复(1)上使用键删除的文件或文件夹。在“我的电脑”窗口中,...
55题库为您解答: 正确答案:B 解析:本题考查Windows操作系统应用的基本知识.在Windows操作系统中,"回收站"可以恢复硬盘上使用Del>键删除的文件或文件夹.& ...
- sql delete删除的数据怎么恢复_如何恢复按下Shift + DELETE键永久删除的文件和资料夹?...
简单删除和Shift+Delete永久删除 想删除电脑上的任何文件,有以下两种方式: ① 按「DELETE」键简单删除文件.在这种模式下,文件被移动到回收站.此时,如果我们想要恢复已删除的文件和资料夹 ...
- IO流中文件和文件夹的删除程序举例
/* * 删除功能(无论是文件夹还是文件都是用delete方法,仅仅能一级一级的删除.):public boolean delete() * * 注意: * A:假设你创建文件或者目录忘了写盘符路径, ...
- ubuntu复制文件到另一个文件夹_简单介绍一下电脑中的文件或文件夹的复制、移动及删除的操作方式...
大家好,我是波仔,今天又来跟各位学电脑基础的朋友们分享知识,让我们一起来学习吧. 复制文件或文件夹 在我们日常操作文件或文件夹的过程中,经常会遇到需要复制一些文件或文件夹什么的,下面我们就一起来分享一 ...
- Linux删除文件和文件夹【命令】
1.删除文件夹:rm -r /opt/hello 将会删除/opt/hello目录以及其下所有文件.文件夹 2.删除文件:rm -f /opt/hello/world.txt 将会强制删除/opt/h ...
- svn如何删除服务器上的文件,【SVN】彻底 svn 服务器上的 删除某一个文件或文件夹...
参考: CSDN1:https://blog.csdn.net/u011729865/article/details/78764523 CSDN2:https://blog.csdn.net/wyyo ...
- VB.net 删除文件、文件夹
'这个应该是你要的.删除文件夹下面的所有内容:包括文件,文件夹.Public Sub DeleteFoldeSubFF(ByVal fpath As String)TryFor Each fd As ...
最新文章
- matlab基于dct的图像压缩编码解码_基于FPGA的扩频系统设计(下)
- MPU6050姿态融合(转载)
- (*长期更新)软考网络工程师学习笔记——数据链路层与网络层的相关计算题
- mysql 对表插入多行_MySQL表中怎么一次插入两行或更多行
- SharePoint v3:忘掉模拟用户Impersonate,SPSecurity.RunWithElevatedPrivileges来了
- linux 命令tf,linux——新手提问(关于文件内容替换)
- 华为云专线接入方案介绍
- JavaScript中通过点击单选框动态显示和隐藏组件
- 中位数(Median)
- 高速串行收发器的预加重与均衡
- RGB和CMYK配色表
- android 跳转京东app,第三方应用跳转到京东app
- oracle temporarily delayed,temporarily closed造句
- java xmemcached incr_XMemcached的基本使用
- 电商平台--Mysql主从搭建(2)
- 个人所得税计算函数 Oracle可用
- 基于VB的Picture绘图
- 毕设论文中第一章的图注出现“图一.1”,转化为“图1.1”的方法
- 步进电机基础(2.1)- 定子相数的分类、结构、原理
- 全国计算机照片怎么弄,证件照电子版怎么弄-制作证件照其实很简单,用excel就行,2分钟搞定...
热门文章
- python创建数据库字数不限制_KindEditor设置字数限制
- Axure旋转与移动效果
- 如何利用Vue3管理系统实现动态路由和动态侧边菜单栏
- sulley里面Pcapy模块安装容易出错地方
- HTML5情人节礼物2(女友3D相册)
- 四川大学2019计算机考研,四川大学考研全攻略篇(各学院2019年考研详解、报考建议...)...
- 关于CFree5.0中设置支持C99模式
- P5.js 实现交互式动态绘画
- 把服务器sql数据库导出excel文件,将mysql数据库数据以Excel文件的形式导出
- hive获取近12个月数据