[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();
            }
        }
 
    }
 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FL1623863129

你的打赏是我写文章最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值