PathHelper.cs
来源:互联网 发布:淘宝客qq群里的优惠券 编辑:程序博客网 时间:2024/06/07 21:48
namespace Helpers{ using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Security.Cryptography; public static class PathHelper { /// <summary> /// 创建指定路径 /// </summary> /// <param name="path"></param> /// <returns></returns> public static bool Create(string path) { try { Directory.CreateDirectory(path); return true; } catch { return false; } } /// <summary> /// 获得文件目录 /// </summary> /// <param name="path">目录路径</param> /// <returns></returns> public static List<FileInfo> GetFileList(string path) { try { return Directory.GetFiles(path).Select(filePath => new FileInfo(filePath)).ToList(); } catch { return null; } } /// <summary> /// 擦除文件 /// </summary> /// <param name="filename"></param> /// <param name="timesToWrite"></param> public static void WipeFile(string filename, int timesToWrite) { try { if (!File.Exists(filename)) return; //设置文件的属性为正常,这是为了防止文件是只读的 File.SetAttributes(filename, FileAttributes.Normal); //计算扇区数目 var sectors = Math.Ceiling(new FileInfo(filename).Length / 512.0); // 创建一个相同大小的虚拟缓存 var dummyBuffer = new byte[512]; // 创建一个加密随机数生成器 var rng = new RNGCryptoServiceProvider(); // 打开这个文件的FileStream var inputStream = new FileStream(filename, FileMode.Open, FileAccess.Write, FileShare.ReadWrite); for (var currentPass = 0; currentPass < timesToWrite; currentPass++) { // 文件流位置 inputStream.Position = 0; //循环全部的扇区 for (var sectorsWritten = 0; sectorsWritten < sectors; sectorsWritten++) { //把垃圾数据填充到流中 rng.GetBytes(dummyBuffer); // 写入文件流中 inputStream.Write(dummyBuffer, 0, dummyBuffer.Length); } } // 清空文件 inputStream.SetLength(0); // 关闭文件流 inputStream.Close(); // 清空原始日期概要 var dt = new DateTime(2037, 1, 1, 0, 0, 0); File.SetCreationTime(filename, dt); File.SetLastAccessTime(filename, dt); File.SetLastWriteTime(filename, dt); // 删除文件 File.Delete(filename); } catch (Exception) { // ignored } } }}
阅读全文