封裝了對文件類的各種操作
轉載自http://www.open-open.com/lib/view/open1391348397082.html
代碼如下:

using System;using System.Data;using System.Configuration;using System.Linq;using System.Web;using System.IO;using System.Collections;using System.Collections.Generic;using System.Security.accessControl;using System.Security.Permissions;namespace Bll{ public class FolderHelper { //判斷文件夾是否存在 public static bool checkFolderExits(string path) { DirectoryInfo dir = new DirectoryInfo(path); if (dir.Exists)//文件夾存在 { return true; } else { //dir.Create();//不存在就創建一個 return false; } } //創建一個文件夾,存在就創建失敗 public static bool CreateNewFolder(string path) { DirectoryInfo dir = new DirectoryInfo(path); if (!dir.Exists) { dir.Create(); return true; } else return false; } /// <summary> /// 在指定目錄下創建指定名稱文件夾 /// </summary> /// <param name="ParentsPath"></param> /// <param name="NewFolderName"></param> /// <returns></returns> public static bool CreateNewFolder(string ParentsPath, string NewFolderName) { string CreatePath = ParentsPath + @"/" + NewFolderName; DirectoryInfo dir = new DirectoryInfo(CreatePath); if (!dir.Exists) { dir.Create(); return true; } else return false; } /// <summary> /// 返回目錄下的所有文件名 /// </summary> /// <param name="path"></param> /// <returns></returns> public static ArrayList getAllFiles(string path) { DirectoryInfo dir = new DirectoryInfo(path); if (dir.Exists) { FileInfo[] fileinfo = dir.GetFiles(); ArrayList list = new ArrayList(); foreach (FileInfo f in fileinfo) { list.Add(f.Name); } return list; } else return null; } /// <summary> /// 計算文件夾的大小 /// </summary> /// <param name="d"></param> /// <returns></returns> public static long DirSize(DirectoryInfo d) { long Size = 0; // Add file sizes. FileInfo[] fis = d.GetFiles();//獲得目錄文件列表 foreach (FileInfo fi in fis) { Size += fi.Length; } // Add subdirectory sizes. DirectoryInfo[] dis = d.GetDirectories();//獲取目錄子目錄列表 foreach (DirectoryInfo di in dis) { Size += DirSize(di); } return Size; } /// <summary> /// 把文件夾得大小轉換成比較合適的表示單位 /// </summary> /// <param name="size"></param> /// <returns></returns> public static string ViewSize(long size) { long m=size; string viewstr; if ((m / 1024) > 0)//表示可以轉換成KB { m = m / 1024;//轉換成KB if ((m / 1024) > 0)//表示可以轉換成MB { m = m / 1024;//轉換成MB了 if ((m / 1024) > 0)//表示可以轉換成GB { m = m / 1024;//轉換成GB了 viewstr = m.ToString() + "GB"; } else { viewstr = m.ToString() + "MB"; } } else { viewstr = m.ToString() + "KB"; } } else { viewstr = m.ToString() + "byte"; } return viewstr; } /// <summary> /// 刪除指定目錄和內容 /// </summary> /// <param name="dir"></param> /// <returns></returns> public static bool delDir(string dir) { bool flag = false; DirectoryInfo d = new DirectoryInfo(dir); if (d.Exists)//判斷目錄是否存在 { try { d.Delete(); flag = true; } catch (Exception e) { flag = false; } } return flag; } /// <summary> /// 刪除指定文件 /// </summary> /// <param name="fil"></param> /// <returns></returns> public static bool delFile(string fil) { bool flag = false; FileInfo d = new FileInfo(fil); if (d.Exists)//判斷目錄是否存在 { try { d.Delete(); flag = true; } catch (Exception e) { flag = false; } } return flag; } public static void Copy(string sourceDirectory, string targetDirectory) { DirectoryInfo diSource = new DirectoryInfo(sourceDirectory); DirectoryInfo diTarget = new DirectoryInfo(targetDirectory); CopyAll(diSource, diTarget); } /// <summary> /// 復制目錄及子文件到指定目錄 /// </summary> /// <param name="source"></param> /// <param name="target"></param> public static void CopyAll(DirectoryInfo source, DirectoryInfo target) { // Check if the target directory exists, if not, create it. if (Directory.Exists(target.FullName) == false) { Directory.CreateDirectory(target.FullName); } // Copy each file into it's new directory. foreach (FileInfo fi in source.GetFiles()) { Console.WriteLine(@"Copying {0}/{1}", target.FullName, fi.Name); fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true); } // Copy each subdirectory using recursion. foreach (DirectoryInfo diSourceSubDir in source.GetDirectories()) { DirectoryInfo nextTargetSubDir = target.CreateSubdirectory(diSourceSubDir.Name); CopyAll(diSourceSubDir, nextTargetSubDir); } } /// <summary> /// 循環讀取某個目錄下的所有文件和目錄,查詢有關每一項的一些信息。返回一個文件列表 /// </summary> /// <param name="strCurrentDir"></param> public static List<fileEntity> FileView(string strCurrentDir) { List<fileEntity> fileList = new List<fileEntity>(); DirectoryInfo dir = new DirectoryInfo(strCurrentDir); foreach (FileSystemInfo fsi in dir.GetFileSystemInfos())//這個循環再讀取文件的信息 { try { //FileSystemInfo 對象可以表示文件或目錄,從而可以作為 FileInfo 或 DirectoryInfo 對象的基礎。 當分析許多文件和目錄時,請使用該基類。 FileInfo fi; DirectoryInfo di; //創建一個自己寫的實體類的實體 fileEntity newfile = new fileEntity(); if (fsi is FileInfo)//外層循環讀取文件信息 { //表示當前fsi是文件 fi = (FileInfo)fsi; newfile.fileName = fi.Name; newfile.fileExt = fi.Extension; newfile.fileSize = fi.Length;
新聞熱點
疑難解答