[C#][转载]彻底删除文件或目录不可恢复恢复工具也不行

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ClearDirectory
{
    public class ClearTool
    {
        /// <summary>
        /// 清空目录或文件
        /// </summary>
        public static void ClearDelet(string path)
        {
            if (File.Exists(path)) ClearDeletFile(path);
            if (Directory.Exists(path)) ClearDeletDirectory(path);
        }
 
        /// <summary>
        /// 先清空目录中的所有文件和子目录内容,再删除当前目录
        /// </summary>
        public static void ClearDeletDirectory(string dir)
        {
            if (Directory.Exists(dir))
            {
                // 清除目录下的所有文件
                foreach (String iteam in Directory.GetFiles(dir))
                {
                    ClearDeletFile(iteam);
                }
 
                // 清除目录下的所有子目录
                foreach (String iteam in Directory.GetDirectories(dir))
                {
                    ClearDeletDirectory(iteam);
                }
 
                String newName = System.IO.Directory.GetParent(dir).FullName + "\\$";
                while (File.Exists(newName)) newName += "$";
 
                // 清除当前目录
                Directory.Move(dir, newName);   // 重命名当前目录,清除目录名信息
                Directory.Delete(newName);      // 清除当前目录
            }
        }
 
        /// <summary>
        /// 先清空文件内容,再删除
        /// </summary>
        public static void ClearDeletFile(string file)
        {
            ClearFile(file);                // 清空文件内容
            if (File.Exists(file))
            {
                String newName = System.IO.Directory.GetParent(file).FullName + "\\$";
                while (File.Exists(newName)) newName += "$";
 
                File.Move(file, newName);   // 重命名文件,清除文件名称信息
                File.Delete(newName);       // 删除文件
            }
        }
 
        /// <summary>
        /// 清空文件内容
        /// </summary>
        public static void ClearFile(string file)
        {
            if (File.Exists(file))
            {
                int SIZE = 1024 * 10240;
                byte[] array = new byte[SIZE];
                array.Initialize();
 
                FileStream s = new FileStream(file, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite, SIZE, FileOptions.RandomAccess);
 
                // 清空原有文件内容
                while (s.Position + SIZE <= s.Length - 1)
                {
                    s.Write(array, 0, SIZE);
                }
                int reminds = (int)(s.Length - s.Position);
                if (reminds > 0) s.Write(array, 0, reminds);
 
                // 清除文件长度信息
                s.SetLength(0);
                s.Close();
            }
        }
 
    }
 
}

上一篇:读取浏览图片的python脚本


下一篇:oracle导入命令impdp中cluster选项的作用