C#文件操作工具類

jopen 10年前發布 | 27K 次閱讀 .NET開發 FoderHelper

    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){}  
            }  


        }  
    }  
}  </pre><br />
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!