C#文件幫助類FoderHelper

jopen 10年前發布 | 25K 次閱讀 C# .NET開發

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>

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