如何删除文件夹及其内容,而不将其放入回收站?

我正在创建一个程序来在驱动器上运行文件I / O压力,当它完成后,我想删除文件,但不想将它们放在回收站中。 这是我现在的代码:

public static void DeleteDirectory(string target_dir) { //Delete the files and folders created during stress. string[] files = Directory.GetFiles(target_dir); string[] dirs = Directory.GetDirectories(target_dir); foreach (string file in files) { File.SetAttributes(file, FileAttributes.Normal); File.Delete(file); } foreach (string dir in dirs) { DeleteDirectory(dir); } Thread.Sleep(30); Directory.Delete(target_dir, true); } 

但是这段代码只是将文件移动到回收站。 我不想添加代码来自动清空回收站,因为那里可能有文件我不想删除(文件可能属于其他人)。

注意:从迄今为止的回复来看,似乎人们可能会误解我在这里要做的事情。 当我的程序删除文件时,它会将它们发送到回收站。 我不希望这种情况发生,我想立即删除文件。 我没有看到任何方法告诉系统删除​​文件而不将它们发送到回收站。 我永远不需要恢复文件。 它是默认发送到回收站,但我没有看到任何改变它的方法。 如果可能的话,请编辑我发布的代码,让它立即删除文件。 我是新手C#用户的开始。

您正在寻找FileSystem.DeleteDirectory方法(String,UIOption,RecycleOption)

回收

指定是否应将已删除的文件发送到回收站。 默认值为RecycleOption.DeletePermanently。

C#与文件系统交互,而不是物理内存块。

要求驱动器擦除内容的实际方法因接口而异(ATAPI vs SATA vs USB等),C#不提供这种级别的简单命令。

但是您可以使用sdelete命令在c#中执行进程以实现永久删除:

 Process p = new Process(); p.StartInfo = new ProcessStartInfo( "cmd", "/c sdelete -p 1 -s -z -q -a 'path/to/director' ) { RedirectStandardOutput = true, UseShellExecute = false, CreateNoWindow = true }; p.Start(); string output = p.StandardOutput.ReadToEnd(); p.WaitForExit();