C#文件帮助类FoderHelper

jopen 10年前

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;                          newfile.FileModify = fi.LastWriteTime;                          //通过扩展名来选择文件显示图标                          switch (newfile.fileExt)                          {                              case ".gif":                                  newfile.picName = "gif.gif";                                  break;                              default:                                  newfile.picName = "other.gif";                                  break;                          }                          newfile.picName = "<img src='" + newfile.picName + "' width=25 height=20>";                      }                      else                      {                          di = (DirectoryInfo)fsi;                          newfile.fileName = di.Name;                          newfile.fileSize = DirSize(di);//调用计算文件夹大小的方法                          newfile.FileModify = di.LastWriteTime;                          newfile.picName = "<img src='directory.gif' width=25 height=20>";                      }                      fileList.Add(newfile);                  }                  catch (Exception e) { }              }              return fileList;            }              /// <summary>          /// 显示目录和文件          /// </summary>          /// <param name="path"></param>          public static void All(string path)          {              FileInfo fi;//文件              DirectoryInfo di;//目录              DirectoryInfo dir=null;              int i = 0; //控制行的颜色              try              {                  dir = new DirectoryInfo(path);              }              catch (Exception e) { }              foreach (FileSystemInfo fsi in dir.GetFileSystemInfos())              {                  try                  {                      fileEntity newfile = new fileEntity();                      FolderEntity folder = new FolderEntity();                      newfile.fileName = "";                      newfile.picName = "";                      newfile.fileExt = "";                      newfile.fileSize = 0;                      folder.folderName = "";                      folder.picName = "";                        i += 1;                      if (fsi is FileInfo)//判断当前读取的是不是一个文件                      {                          //表示当前fsi是文件                          fi = (FileInfo)fsi;                          newfile.fileName = fi.Name;                          newfile.fileExt = fi.Extension;                          newfile.fileSize = fi.Length;                          newfile.FileModify = fi.LastWriteTime;                            //将文件加上可以下载文件的链接                              newfile.fileName = "<a href='........'></a>";                              //通过扩展名来选择文件显示图标                            //Response.Write(Session["DataBasePath"].ToString()+"\\filetype\\"+pfun.getFileExt(FileExt)+".gif");                            if (fsi.Exists)                          {                              switch (newfile.fileExt)                              {                                  case ".gif":                                      newfile.picName = "gif.gif";                                      break;                                  default:                                      newfile.picName = "other.gif";                                      break;                              }                          }                          else                          {                              newfile.picName = "unknown.gif";                          }                              /*                          switch(FileExt)                          {                              case ".gif":                                  FilePic = "gif.gif";                                  break;                              default:                                  FilePic = "other.gif";                                  break;                          }                          */                            newfile.picName = "<img src='filetype/" + newfile.picName + "' width=16 height=16>";                        }                      else                      {                          //当前为目录                          di = (DirectoryInfo)fsi;                          folder.folderName = di.Name;                            //给目录加上链接                            folder.folderName = "<a href='.......'><a>";                          folder.lastTime = di.LastWriteTime;                          folder.picName = "<img src='filetype/folder.gif' width=16 height=16>";                        }                  }catch(Exception e){}              }              }      }  }