小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

C# 文件粉碎

 昵稱10504424 2013-11-18

>文件粉碎的流程

  1. 填充文件
  2. 更改最后使用/創(chuàng)建時(shí)間
  3. 更改名稱
  4. 將大小改為 0 kb
  5. 刪除
復(fù)制代碼
  1 using System;
  2 using System.Collections.Generic;
  3 using System.Text;
  4 using System.IO;
  5 
  6 namespace RocketStudio
  7 {
  8     class ShredFile
  9     {
 10         /// <summary>
 11         /// 文件粉碎選項(xiàng)
 12         /// </summary>
 13         public enum ShredMode
 14         {
 15             /// <summary>
 16             /// 隨機(jī)數(shù)
 17             /// </summary>
 18             RandData,
 19             /// <summary>
 20             /// 指定的Byte
 21             /// </summary>
 22             UserByte,
 23             /// <summary>
 24             /// 指定的字符串
 25             /// </summary>
 26             UserString
 27         }
 28         /// <summary>
 29         /// 將指定的流粉碎使用隨機(jī)數(shù)
 30         /// </summary>
 31         /// <param name="fs">文件流</param>
 32         /// <returns></returns>
 33         public bool Shred(FileStream fs)
 34         {
 35             try
 36             {
 37                 BinaryWriter bw = new BinaryWriter(fs);
 38                 long fileLength = fs.Length;
 39                 long writeBytes = 0;
 40                 Random random = new Random();
 41                 byte[] data = new byte[10240];
 42                 random.NextBytes(data);
 43 
 44                 for (; writeBytes < fileLength; writeBytes += 10240)
 45                 {
 46                     if (fileLength - writeBytes > 10240)
 47                         bw.Write(data);
 48                     else bw.Write(data, 0, (int)(fileLength - writeBytes));
 49                 }
 50                 fs.Flush();
 51                 return true;
 52             }
 53             catch
 54             {
 55                 return false;
 56             }
 57         }
 58         /// <summary>
 59         /// 將指定的流粉碎使用指定字符
 60         /// </summary>
 61         /// <param name="fs">文件流</param>
 62         /// <param name="data">字符串</param>
 63         /// <returns></returns>
 64         public bool Shred(FileStream fs, byte data)
 65         {
 66             try
 67             {
 68                 BinaryWriter bw = new BinaryWriter(fs);
 69                 long fileLength = fs.Length;
 70                 long writeBytes = 0;
 71                 for (; writeBytes < fileLength; writeBytes++)
 72                 {
 73                     bw.Write(data);
 74                 }
 75                 fs.Flush();
 76                 return true;
 77             }
 78             catch
 79             {
 80                 return false;
 81             }
 82         }
 83         /// <summary>
 84         /// 將指定的流粉碎使用指定字符串
 85         /// </summary>
 86         /// <param name="fs">文件流</param>
 87         /// <param name="data">字符串</param>
 88         /// <returns></returns>
 89         public bool Shred(FileStream fs, string data)
 90         {
 91             try
 92             {
 93                 BinaryWriter bw = new BinaryWriter(fs);
 94                 long fileLength = fs.Length;
 95                 long writeBytes = 0;
 96                 char[] dataArry = new char[data.Length];
 97                 for (int ii = 0;ii<data.Length;ii++)
 98                 {
 99                     dataArry[ii] = data[ii];
100                 }
101                 int dataLength = dataArry.Length;
102                 for (; writeBytes < fileLength; writeBytes += dataLength)
103                 {
104                     if ((fileLength - writeBytes) < dataLength)
105                         bw.Write(dataArry);
106                     else bw.Write(dataArry, 0, dataLength);
107                 }
108                 fs.Flush();
109                 return true;
110             }
111             catch
112             {
113                 return false;
114             }
115         }
116         public void RenameFile(string old, string last)
117         {
118             File.Move(old, last);
119         }
120         /// <summary>
121         /// 使用隨機(jī)數(shù)生成文件名
122         /// </summary>
123         /// <returns></returns>
124         private string ReandName()
125         {
126             Random random = new Random();
127             random.Next(1000).ToString();
128             return random.Next(1000).ToString() + random.Next(1000).ToString() + random.Next(1000).ToString();
129         }
130         /// <summary>
131         /// 開始粉碎
132         /// </summary>
133         /// <param name="fileName">文件名</param>
134         /// <param name="data">填充數(shù)據(jù),ShredMode.RandData 將忽略 可為NULL</param>
135         /// <param name="sm">粉碎文件模式</param>
136         /// <returns>是否成功</returns>
137         public bool StartShredFile(string fileName, object data, ShredMode sm, bool IsCleanCreatedDate, bool IsCleanLastUsedDate, bool IsCleanName, bool IsEmptyFile) 
138         {
139             FileStream fs = null;
140             try
141             {
142                 fs = File.Open(fileName, FileMode.Open);
143             }
144             catch
145             {
146                 //error
147                 return false;
148             }
149             bool IsSucceed = false;
150             switch (sm)
151             {
152                 case ShredMode.RandData:
153                     IsSucceed = Shred(fs);
154                     break;
155                 case ShredMode.UserByte:
156                     IsSucceed = Shred(fs, Convert.ToByte(data));
157                     break;
158                 case ShredMode.UserString:
159                     IsSucceed = Shred(fs, (string)data);
160                     break;
161 
162             }
163             DateTime dt = new DateTime(2012,12,24);
164             try
165             {
166                 FileInfo fi = new FileInfo(fileName);
167                 string randName;
168                 if (IsCleanName)
169                     randName = ReandName();
170                 else randName = @"\"+fi.Name;
171                
172                 fs.Close();
173                 if(IsEmptyFile)
174                 File.Open(fi.FullName, FileMode.Truncate).Close();
175                 if(IsCleanName)
176                 RenameFile(fi.FullName, fi.DirectoryName + randName);
177                 if(IsCleanCreatedDate)
178                 File.SetCreationTime(fi.DirectoryName + randName, dt);
179                 if (IsCleanLastUsedDate)
180                 {
181                     if(IsCleanName)
182                       File.SetLastWriteTime(fi.DirectoryName + randName, dt);
183                     else
184                         File.SetLastWriteTime(fi.FullName, dt);
185                 }
186                 File.Delete(fi.DirectoryName + randName);
187             }
188 
189             catch
190             {
191                 return false;
192             }
193             finally { fs.Close(); }
194             return IsSucceed;
195         }
196     }
197 
198 }
復(fù)制代碼

>如何使用

bool StartShredFile(string fileName, object data, ShredMode sm, bool IsCleanCreatedDate, bool IsCleanLastUsedDate, bool IsCleanName, bool IsEmptyFile)

>>>使用指定方法粉碎文件并刪除

string filename : 文件名

ShredMode sm : 粉碎的方法(填充數(shù)據(jù)的類型)(RandData隨機(jī)數(shù), UserByte指定的字節(jié), UserString指定的字符串)

Object data : 填充的數(shù)據(jù)(根據(jù)ShredMode指定的方法拆箱)可以為string,byte,在ShredMode為RandData時(shí)可以為null

bool IsCleanCreatedDate : 是否更改創(chuàng)建日期(指定為2012,12,24)

bool IsCleanLastUsedDate : 是否更改最后使用日期(同上)

返回是否成功

bool Shred(FileStream fs)

內(nèi)部方法>>>填充文件(沒來得及換名字,也算粉碎吧) 重載 0

將FileStream fs指定的文件填充為隨機(jī)數(shù)

返回是否成功

bool Shred(FileStream fs, byte data)

內(nèi)部方法>>>填充文件(沒來得及換名字,也算粉碎吧) 重載 1

將FileStream fs指定的文件填充為byte data 的數(shù)據(jù)

返回是否成功

bool Shred(FileStream fs, string data)

內(nèi)部方法>>>填充文件(沒來得及換名字,也算粉碎吧) 重載 2

將FileStream fs指定的文件填充為string data 的數(shù)據(jù)

返回是否成功

枚舉 enum ShredMode 文件粉碎的方法

隨機(jī)數(shù)
RandData,
指定的Byte
UserByte,
指定的字符串
UserString

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約