C#實現(xiàn)刪除文件和目錄到回收站
之前在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 Const public const int FO_DELETE = 3; public const int FOF_ALLOWUNDO = 0x40; public const int FOF_NOCONFIRMATION = 0x10; #endregion #region Public Static Method public 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 } }
到此這篇關(guān)于C#實現(xiàn)刪除文件和目錄到回收站的文章就介紹到這了,更多相關(guān)C#刪除文件和目錄內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#針對xml文件轉(zhuǎn)化Dictionary的方法
這篇文章主要介紹了C#針對xml文件轉(zhuǎn)化Dictionary的方法,是C#操作XML文件的典型應(yīng)用,具有一定參考借鑒價值,需要的朋友可以參考下2015-01-01Unity 從Resources中動態(tài)加載Sprite圖片的操作
這篇文章主要介紹了Unity 從Resources中動態(tài)加載Sprite圖片的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04C#數(shù)據(jù)結(jié)構(gòu)之最小堆的實現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于C#數(shù)據(jù)結(jié)構(gòu)之最小堆的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02C#基礎(chǔ)教程之類class與結(jié)構(gòu)struct的區(qū)別
struct是值類型,創(chuàng)建一個struct類型的實例被分配在棧上,class是引用類型,創(chuàng)建一個class類型實例被分配在托管堆上,下面這篇文章主要給大家介紹了關(guān)于C#基礎(chǔ)教程之類class與結(jié)構(gòu)struct區(qū)別的相關(guān)資料,需要的朋友可以參考下2022-11-11C#匿名方法與Delegate類型轉(zhuǎn)換錯誤分析
這篇文章主要介紹了C#匿名方法與Delegate類型轉(zhuǎn)換錯誤,較為詳細(xì)的分析了C#匿名方法的用法及Delegate類型轉(zhuǎn)換錯誤問題解決方法,具有一定的實用價值,需要的朋友可以參考下2014-11-11C#語言MVC框架Aspose.Cells控件導(dǎo)出Excel表數(shù)據(jù)
這篇文章主要為大家詳細(xì)介紹了C#語言MVC框架Aspose.Cells控件導(dǎo)出Excel表數(shù)據(jù),具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-12-12