Asp.net(C#)對檔案操作的方法(讀取,刪除,批量拷貝,刪除...)

iDotNetSpace發表於2009-12-18
1 using System.Data;
  2 using System.Configuration;
  3 using System.Web;
  4 using System.Web.Security;
  5 using System.Web.UI;
  6 using System.Web.UI.WebControls;
  7 using System.Web.UI.WebControls.WebParts;
  8 using System.Web.UI.HtmlControls;
  9 using System.Text;
 10 using System.IO;
 11 
 12 namespace EC
 13 {
 14     /**//// 
 15     /// FileObj 的摘要說明
 16     /// 
 17     public class FileObj
 18     {
 19         建構函式#region 建構函式
 20         private bool _alreadyDispose = false;
 21         public FileObj()
 22         {
 23             //
 24             // TODO: 在此處新增建構函式邏輯
 25             //
 26         }
 27         ~FileObj()
 28         {
 29             Dispose(); ;
 30         }
 31 
 32         protected virtual void Dispose(bool isDisposing)
 33         {
 34             if (_alreadyDispose) return;
 35             //if (isDisposing)
 36             //{
 37             //    if (xml != null)
 38             //    {
 39             //        xml = null;
 40             //    }
 41             //}
 42             _alreadyDispose = true;
 43         }
 44         #endregion
 45 
 46         IDisposable 成員#region IDisposable 成員
 47 
 48         public void Dispose()
 49         {
 50             Dispose(true);
 51             GC.SuppressFinalize(this);
 52         }
 53 
 54         #endregion
 55 
 56         取得檔案字尾名#region 取得檔案字尾名
 57         /**//****************************************
 58         * 函式名稱:GetPostfixStr
 59         * 功能說明:取得檔案字尾名
 60         * 參    數:filename:檔名稱
 61         * 呼叫示列:
 62         *          string filename = "aaa.aspx";        
 63         *          string s = EC.FileObj.GetPostfixStr(filename);        
 64         *****************************************/
 65         /**//// 
 66         /// 取字尾名
 67         /// 
 68         /// 檔名
 69         /// .gif|.html格式
 70         public static string GetPostfixStr(string filename)
 71         {
 72             int start = filename.LastIndexOf(".");
 73             int length = filename.Length;
 74             string postfix = filename.Substring(start, length - start);
 75             return postfix;
 76         }
 77         #endregion
 78 
 79         寫檔案#region 寫檔案
 80         /**//****************************************
 81         * 函式名稱:WriteFile
 82         * 功能說明:當檔案不存時,則建立檔案,並追加檔案
 83         * 參    數:Path:檔案路徑,Strings:文字內容
 84         * 呼叫示列:
 85         *          string Path = Server.MapPath("Default2.aspx");      
 86         *          string Strings = "這是我寫的內容啊";
 87         *          EC.FileObj.WriteFile(Path,Strings);
 88         *****************************************/
 89         /**//// 
 90         /// 寫檔案
 91         /// 
 92         /// 檔案路徑
 93         /// 檔案內容
 94         public static void WriteFile(string Path, string Strings)
 95         {
 96 
 97             if (!System.IO.File.Exists(Path))
 98             {
 99                 //Directory.CreateDirectory(Path);
100 
101                 System.IO.FileStream f = System.IO.File.Create(Path);
102                 f.Close();
103                 f.Dispose();
104             }
105             System.IO.StreamWriter f2 = new System.IO.StreamWriter(Path, true, System.Text.Encoding.UTF8);
106             f2.WriteLine(Strings);
107             f2.Close();
108             f2.Dispose();
109 
110 
111         }
112         #endregion
113 
114         讀檔案#region 讀檔案
115         /**//****************************************
116         * 函式名稱:ReadFile
117         * 功能說明:讀取文字內容
118         * 參    數:Path:檔案路徑
119         * 呼叫示列:
120         *          string Path = Server.MapPath("Default2.aspx");      
121         *          string s = EC.FileObj.ReadFile(Path);
122         *****************************************/
123         /**//// 
124         /// 讀檔案
125         /// 
126         /// 檔案路徑
127         /// 
128         public static string ReadFile(string Path)
129         {
130             string s = "";
131             if (!System.IO.File.Exists(Path))
132                 s = "不存在相應的目錄";
133             else
134             {
135                 StreamReader f2 = new StreamReader(Path, System.Text.Encoding.GetEncoding("gb2312"));
136                 s = f2.ReadToEnd();
137                 f2.Close();
138                 f2.Dispose();
139             }
140 
141             return s;
142         }
143         #endregion
144 
145         追加檔案#region 追加檔案
146         /**//****************************************
147         * 函式名稱:FileAdd
148         * 功能說明:追加檔案內容
149         * 參    數:Path:檔案路徑,strings:內容
150         * 呼叫示列:
151         *          string Path = Server.MapPath("Default2.aspx");    
152         *          string Strings = "新追加內容";
153         *          EC.FileObj.FileAdd(Path, Strings);
154         *****************************************/
155         /**//// 
156         /// 追加檔案
157         /// 
158         /// 檔案路徑
159         /// 內容
160         public static void FileAdd(string Path, string strings)
161         {
162             StreamWriter sw = File.AppendText(Path);
163             sw.Write(strings);
164             sw.Flush();
165             sw.Close();
166             sw.Dispose();
167         }
168         #endregion
169 
170         拷貝檔案#region 拷貝檔案
171         /**//****************************************
172         * 函式名稱:FileCoppy
173         * 功能說明:拷貝檔案
174         * 參    數:OrignFile:原始檔案,NewFile:新檔案路徑
175         * 呼叫示列:
176         *          string OrignFile = Server.MapPath("Default2.aspx");    
177         *          string NewFile = Server.MapPath("Default3.aspx");
178         *          EC.FileObj.FileCoppy(OrignFile, NewFile);
179         *****************************************/
180         /**//// 
181         /// 拷貝檔案
182         /// 
183         /// 原始檔案
184         /// 新檔案路徑
185         public static void FileCoppy(string OrignFile, string NewFile)
186         {
187             File.Copy(OrignFile, NewFile, true);
188         }
189 
190         #endregion
191 
192         刪除檔案#region 刪除檔案
193         /**//****************************************
194         * 函式名稱:FileDel
195         * 功能說明:刪除檔案
196         * 參    數:Path:檔案路徑
197         * 呼叫示列:
198         *          string Path = Server.MapPath("Default3.aspx");    
199         *          EC.FileObj.FileDel(Path);
200         *****************************************/
201         /**//// 
202         /// 刪除檔案
203         /// 
204         /// 路徑
205         public static void FileDel(string Path)
206         {
207             File.Delete(Path);
208         }
209         #endregion
210 
211         移動檔案#region 移動檔案
212         /**//****************************************
213         * 函式名稱:FileMove
214         * 功能說明:移動檔案
215         * 參    數:OrignFile:原始路徑,NewFile:新檔案路徑
216         * 呼叫示列:
217         *            string OrignFile = Server.MapPath("../說明.txt");    
218         *            string NewFile = Server.MapPath("http://www.cnblogs.com/說明.txt");
219         *            EC.FileObj.FileMove(OrignFile, NewFile);
220         *****************************************/
221         /**//// 
222         /// 移動檔案
223         /// 
224         /// 原始路徑
225         /// 新路徑
226         public static void FileMove(string OrignFile, string NewFile)
227         {
228             File.Move(OrignFile, NewFile);
229         }
230         #endregion
231 
232         在當前目錄下建立目錄#region 在當前目錄下建立目錄
233         /**//****************************************
234         * 函式名稱:FolderCreate
235         * 功能說明:在當前目錄下建立目錄
236         * 參    數:OrignFolder:當前目錄,NewFloder:新目錄
237         * 呼叫示列:
238         *          string OrignFolder = Server.MapPath("test/");    
239         *          string NewFloder = "new";
240         *          EC.FileObj.FolderCreate(OrignFolder, NewFloder); 
241         *****************************************/
242         /**//// 
243         /// 在當前目錄下建立目錄
244         /// 
245         /// 當前目錄
246         /// 新目錄
247         public static void FolderCreate(string OrignFolder, string NewFloder)
248         {
249             Directory.SetCurrentDirectory(OrignFolder);
250             Directory.CreateDirectory(NewFloder);
251         }
252 
253         /**//// 
254         /// 建立資料夾
255         /// 
256         /// 
257         public static void FolderCreate(string Path)
258         {
259             // 判斷目標目錄是否存在如果不存在則新建之
260             if (!Directory.Exists(Path))
261                 Directory.CreateDirectory(Path);
262         }
263 
264         #endregion
265 
266         建立目錄#region 建立目錄
267         public static void FileCreate(string Path)
268         {
269             FileInfo CreateFile = new FileInfo(Path); //建立檔案 
270             if (!CreateFile.Exists)
271             {
272                 FileStream FS = CreateFile.Create();
273                 FS.Close();
274             }
275         }
276         #endregion
277 
278         遞迴刪除資料夾目錄及檔案#region 遞迴刪除資料夾目錄及檔案
279         /**//****************************************
280         * 函式名稱:DeleteFolder
281         * 功能說明:遞迴刪除資料夾目錄及檔案
282         * 參    數:dir:資料夾路徑
283         * 呼叫示列:
284         *          string dir = Server.MapPath("test/");  
285         *          EC.FileObj.DeleteFolder(dir);      
286         *****************************************/
287         /**//// 
288         /// 遞迴刪除資料夾目錄及檔案
289         /// 
290         ///   
291         /// 
292         public static void DeleteFolder(string dir)
293         {
294             if (Directory.Exists(dir)) //如果存在這個資料夾刪除之 
295             {
296                 foreach (string d in Directory.GetFileSystemEntries(dir))
297                 {
298                     if (File.Exists(d))
299                         File.Delete(d); //直接刪除其中的檔案                        
300                     else
301                         DeleteFolder(d); //遞迴刪除子資料夾 
302                 }
303                 Directory.Delete(dir, true); //刪除已空資料夾                
304             }
305         }
306 
307         #endregion
308 
309         將指定資料夾下面的所有內容copy到目標資料夾下面 果目標資料夾為只讀屬性就會報錯。#region 將指定資料夾下面的所有內容copy到目標資料夾下面 果目標資料夾為只讀屬性就會報錯。
310         /**//****************************************
311         * 函式名稱:CopyDir
312         * 功能說明:將指定資料夾下面的所有內容copy到目標資料夾下面 果目標資料夾為只讀屬性就會報錯。
313         * 參    數:srcPath:原始路徑,aimPath:目標資料夾
314         * 呼叫示列:
315         *          string srcPath = Server.MapPath("test/");  
316         *          string aimPath = Server.MapPath("test1/");
317         *          EC.FileObj.CopyDir(srcPath,aimPath);  
318         *****************************************/
319         /**//// 
320         /// 指定資料夾下面的所有內容copy到目標資料夾下面
321         /// 
322         /// 原始路徑
323         /// 目標資料夾
324         public static void CopyDir(string srcPath, string aimPath)
325         {
326             try
327             {
328                 // 檢查目標目錄是否以目錄分割字元結束如果不是則新增之
329                 if (aimPath[aimPath.Length - 1!= Path.DirectorySeparatorChar)
330                     aimPath += Path.DirectorySeparatorChar;
331                 // 判斷目標目錄是否存在如果不存在則新建之
332                 if (!Directory.Exists(aimPath))
333                     Directory.CreateDirectory(aimPath);
334                 // 得到源目錄的檔案列表,該裡面是包含檔案以及目錄路徑的一個陣列
335                 //如果你指向copy目標檔案下面的檔案而不包含目錄請使用下面的方法
336                 //string[] fileList = Directory.GetFiles(srcPath);
337                 string[] fileList = Directory.GetFileSystemEntries(srcPath);
338                 //遍歷所有的檔案和目錄
339                 foreach (string file in fileList)
340                 {
341                     //先當作目錄處理如果存在這個目錄就遞迴Copy該目錄下面的檔案
342 
343                     if (Directory.Exists(file))
344                         CopyDir(file, aimPath + Path.GetFileName(file));
345                     //否則直接Copy檔案
346                     else
347                         File.Copy(file, aimPath + Path.GetFileName(file), true);
348                 }
349             }
350             catch (Exception ee)
351             {
352                 throw new Exception(ee.ToString());
353             }
354         }
355         #endregion
356 
357         獲取指定資料夾下所有子目錄及檔案(樹形)#region 獲取指定資料夾下所有子目錄及檔案(樹形)
358         /**//****************************************
359         * 函式名稱:GetFoldAll(string Path)
360         * 功能說明:獲取指定資料夾下所有子目錄及檔案(樹形)
361         * 參    數:Path:詳細路徑
362         * 呼叫示列:
363         *          string strDirlist = Server.MapPath("templates");      
364         *          this.Literal1.Text = EC.FileObj.GetFoldAll(strDirlist);  
365         *****************************************/
366         /**//// 
367         /// 獲取指定資料夾下所有子目錄及檔案
368         /// 
369         /// 詳細路徑
370         public static string GetFoldAll(string Path)
371         {
372 
373             string str = "";
374             DirectoryInfo thisOne = new DirectoryInfo(Path);
375             str = ListTreeShow(thisOne, 0, str);
376             return str;
377 
378         }
379 
380         /**//// 
381         /// 獲取指定資料夾下所有子目錄及檔案函式
382         /// 
383         /// 指定目錄
384         /// 預設起始值,呼叫時,一般為0
385         /// 用於迭加的傳入值,一般為空
386         /// 
387         public static string ListTreeShow(DirectoryInfo theDir, int nLevel, string Rn)//遞迴目錄 檔案
388         {
389             DirectoryInfo[] subDirectories = theDir.GetDirectories();//獲得目錄
390             foreach (DirectoryInfo dirinfo in subDirectories)
391             {
392 
393                 if (nLevel == 0)
394                 {
395                     Rn += "";
396                 }
397                 else
398                 {
399                     string _s = "";
400                     for (int i = 1; i <= nLevel; i++)
401                     {
402                         _s += "│ ";
403                     }
404                     Rn += _s + "";
405                 }
406                 Rn += "" + dirinfo.Name.ToString() + "
";
407                 FileInfo[] fileInfo = dirinfo.GetFiles();  //目錄下的檔案
408                 foreach (FileInfo fInfo in fileInfo)
409                 {
410                     if (nLevel == 0)
411                     {
412                         Rn += "│ ├";
413                     }
414                     else
415                     {
416                         string _f = "";
417                         for (int i = 1; i <= nLevel; i++)
418                         {
419                             _f += "│ ";
420                         }
421                         Rn += _f + "│ ├";
422                     }
423                     Rn += fInfo.Name.ToString() + " 
";
424                 }
425                 Rn = ListTreeShow(dirinfo, nLevel + 1, Rn);
426 
427 
428             }
429             return Rn;
430         }
431 
432 
433 
434         /**//****************************************
435         * 函式名稱:GetFoldAll(string Path)
436         * 功能說明:獲取指定資料夾下所有子目錄及檔案(下拉框形)
437         * 參    數:Path:詳細路徑
438         * 呼叫示列:
439         *            string strDirlist = Server.MapPath("templates");      
440         *            this.Literal2.Text = EC.FileObj.GetFoldAll(strDirlist,"tpl","");
441         *****************************************/
442         /**//// 
443         /// 獲取指定資料夾下所有子目錄及檔案(下拉框形)
444         /// 
445         /// 詳細路徑
446         ///下拉選單名稱
447         ///預設選擇模板名稱
448         public static string GetFoldAll(string Path,string DropName,string tplPath)
449         {
450             string strDrop = "";
455 
456         }
457 
458         /**//// 
459         /// 獲取指定資料夾下所有子目錄及檔案函式
460         /// 
461         /// 指定目錄
462         /// 預設起始值,呼叫時,一般為0
463         /// 用於迭加的傳入值,一般為空
464         /// 預設選擇模板名稱
465         /// 
466         public static string ListTreeShow(DirectoryInfo theDir, int nLevel, string Rn,string tplPath)//遞迴目錄 檔案
467         {
468             DirectoryInfo[] subDirectories = theDir.GetDirectories();//獲得目錄
469 
470             foreach (DirectoryInfo dirinfo in subDirectories)
471             {
472 
473                 Rn += "";
494 
495 
496                 FileInfo[] fileInfo = dirinfo.GetFiles();  //目錄下的檔案
497                 foreach (FileInfo fInfo in fileInfo)
498                 {
499                     Rn += "";
520                 }
521                 Rn = ListTreeShow(dirinfo, nLevel + 1, Rn, tplPath);
522 
523 
524             }
525             return Rn;
526         }
527         #endregion
528 
529         獲取資料夾大小#region 獲取資料夾大小
530         /**//****************************************
531         * 函式名稱:GetDirectoryLength(string dirPath)
532         * 功能說明:獲取資料夾大小
533         * 參    數:dirPath:資料夾詳細路徑
534         * 呼叫示列:
535         *          string Path = Server.MapPath("templates"); 
536         *          Response.Write(EC.FileObj.GetDirectoryLength(Path));      
537         *****************************************/
538         /**//// 
539         /// 獲取資料夾大小
540         /// 
541         /// 資料夾路徑
542         /// 
543         public static long GetDirectoryLength(string dirPath)
544         {
545             if (!Directory.Exists(dirPath))
546                 return 0;
547             long len = 0;
548             DirectoryInfo di = new DirectoryInfo(dirPath);
549             foreach (FileInfo fi in di.GetFiles())
550             {
551                 len += fi.Length;
552             }
553             DirectoryInfo[] dis = di.GetDirectories();
554             if (dis.Length > 0)
555             {
556                 for (int i = 0; i < dis.Length; i++)
557                 {
558                     len += GetDirectoryLength(dis.FullName);
559                 }
560             }
561             return len;
562         }
563         #endregion
564 
565         獲取指定檔案詳細屬性#region 獲取指定檔案詳細屬性
566         /**//****************************************
567         * 函式名稱:GetFileAttibe(string filePath)
568         * 功能說明:獲取指定檔案詳細屬性
569         * 參    數:filePath:檔案詳細路徑
570         * 呼叫示列:
571         * string file = Server.MapPath("robots.txt");  
572         * Response.Write(EC.FileObj.GetFileAttibe(file));        
573         *****************************************/
574         /**//// 
575         /// 獲取指定檔案詳細屬性
576         /// 
577         /// 檔案詳細路徑
578         /// 
579         public static string GetFileAttibe(string filePath)
580         {
581             string str = "";
582             System.IO.FileInfo objFI = new System.IO.FileInfo(filePath);
583             str += "詳細路徑:" + objFI.FullName + "
檔名稱:
" + objFI.Name + "
檔案長度:
" + objFI.Length.ToString() + "位元組
建立時間
" + objFI.CreationTime.ToString() + "
最後訪問時間:
" + objFI.LastAccessTime.ToString() + "
修改時間:
" + objFI.LastWriteTime.ToString() + "
所在目錄:
" + objFI.DirectoryName + "
副檔名:
" + objFI.Extension;
584             return str;
585         }
586         #endregion
587     }
588 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-622782/,如需轉載,請註明出處,否則將追究法律責任。

相關文章