當然編程解決方案...如何將文件放入回收站而不是刪除?
回答
http://www.daveamenta.com/2008-05/c-delete-a-file-to-the-recycle-bin/
從上面:
using Microsoft.VisualBasic;
string path = @"c:\myfile.txt";
FileIO.FileSystem.DeleteDirectory(path,
FileIO.UIOption.OnlyErrorDialogs,
RecycleOption.SendToRecycleBin);
您需要深入研究非託管代碼。下面是我一直在使用一個靜態類:
public static class Recycle
{
private const int FO_DELETE = 3;
private const int FOF_ALLOWUNDO = 0x40;
private const int FOF_NOCONFIRMATION = 0x0010;
[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;
}
[DllImport("shell32.dll", CharSet = CharSet.Auto)]
static extern int SHFileOperation(ref SHFILEOPSTRUCT FileOp);
public static void DeleteFileOperation(string filePath)
{
SHFILEOPSTRUCT fileop = new SHFILEOPSTRUCT();
fileop.wFunc = FO_DELETE;
fileop.pFrom = filePath + '\0' + '\0';
fileop.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMATION;
SHFileOperation(ref fileop);
}
}
附錄:
- 嘖嘖@傑夫在C#代碼 「使用Microsoft.VisualBasic程序」。
- Tsk tsk @ MS將所有好東西放在VisualBasic命名空間中。
我想這是其中之一VB只是比C#更好的區域......此外,它不是僅僅因爲它在VB命名空間中而是「不是C#」 - 一個對象是一個對象,不要僅僅因爲它位於名稱空間而不喜歡它的名稱就使用它有點荒謬你不覺得嗎?... – BenAlabaster 2008-12-22 15:18:19
...如果命名空間是Microsoft.UsefulUtilities你不會對使用它們有所保留,那有什麼區別? – BenAlabaster 2008-12-22 15:18:54
我發現最好的方法是使用VB功能FileSystem.DeleteFile
。
Microsoft.VisualBasic.FileIO.FileSystem.DeleteFile(file.FullName,
Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs,
Microsoft.VisualBasic.FileIO.RecycleOption.SendToRecycleBin);
它需要添加Microsoft.VisualBasic
作爲參考,但是這是.NET框架的一部分,所以不是一個額外的依賴。
替代解決方案需要P/Invoke到SHFileOperation,以及定義所有各種結構/常量。包括Microsoft.VisualBasic
比較整齊。
- 1. 如何刪除文件夾及其內容,而不將它們放入回收站中?
- 2. Java 7有辦法將文件放入回收站而不是在Windows上刪除
- 3. 如何將文件夾刪除到回收站中
- 4. 如何將文件/目錄移動到Java回收站而不是永久刪除
- 5. 如何刪除文件存儲在回收站
- 6. 如何從回收站中刪除文件?
- 7. 訪問VBA將文件刪除到回收站?
- 8. 我無法將文件刪除到回收站
- 9. 如何將xml文件放入網站?
- 10. 如何刪除文件名而不是所有文件名?
- 11. 存檔SharePoint站點而不是刪除
- 12. logrotate刪除文件而不是旋轉
- 13. 刪除文件回收站在Windows x64在C#
- 14. 永久刪除GitLab回收站中的二進制文件
- 15. 刪除的文件沒有顯示在回收站中
- 16. 如何刪除文件的內容而不刪除它自己?
- 17. 從回收站刪除單個項目
- 18. 刪除W2K3回收站的內容
- 19. JDOM將內容寫入現有文件而不刪除
- 20. 將文件移動到回收站(PHP)
- 21. 如何清除文本文件而不刪除它使用groovy
- 22. 刪除文件的文件夾,而不是文件夾
- 23. 如何刪除不是mp3的文件?
- 24. 如何刪除的Git庫中的文件,而不刪除文件實際上
- 25. 如何從Eclipse項目中刪除文件而不從磁盤刪除文件?
- 26. zsh:如何刪除文件夾中的內容而不刪除文件夾?
- 27. 如何根據,而文件中刪除正確的文本輸入被刪除
- 28. 如何從Oracle 11g回收站中刪除表格?
- 29. 刪除並插入,而不是更新
- 30. 從Git歷史中刪除文件而不刪除文件
[發送文件到回收站]可能的重複(http://stackoverflow.com/questions/3282418/send-a-file-to-the-recycle-bin) – MicroVirus 2016-06-21 10:56:25