一個文件文件和路徑的類

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
 
namespace Core
{
    public static class FilePathTools
    {
        /// <summary>
        /// 取出文件擴展名
        /// </summary>
        /// <param name="FileName">文件名</param>
        /// <returns></returns>
        public static string GetExtFileTypeName(string FileName)
        {
            string sFile = FileName;
            sFile = sFile.Substring(sFile.LastIndexOf("\\") + 1);
            sFile = sFile.Substring(sFile.LastIndexOf(".")).ToLower();
            return sFile;
        }
 
        /// <summary>
        /// 取出文件名,包括擴展名的完整名稱
        /// </summary>
        /// <param name="FileName">文件名</param>
        /// <returns></returns>
        public static string GetFileFullName(string FileName)
        {
            string sFile = FileName;
            sFile = sFile.Substring(sFile.LastIndexOf("\\") + 1);
            //sFile = sFile.Substring(sFile.LastIndexOf(".")).ToLower();
            return sFile;
        }
 
        /// <summary>
        /// 取出文件名,不包括擴展名
        /// </summary>
        /// <param name="FileName">文件名</param>
        /// <returns></returns>
        public static string GetFileName(string FileName)
        {
            string sFile = FileName;
            sFile = sFile.Substring(sFile.LastIndexOf("\\") + 1);
            sFile = sFile.Substring(0,sFile.LastIndexOf(".")).ToLower();
            return sFile;
        }
 
        /// <summary>
        /// 取出文件所在的路徑
        /// </summary>
        /// <param name="FileName">文件名</param>
        /// <returns></returns>
        public static string GetFilePath(string FileName)
        {
            string sFile = FileName;
            sFile = sFile.Substring(0,sFile.LastIndexOf("\\") );            
            return sFile;
        }
 
        /// <summary>
        /// 產生另一個擴展名的文件完整路徑字符串
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="newext"></param>
        /// <returns></returns>
        public static string NewExtFileName(string fileName, string newext)
        {
            return GetFilePath(fileName) + "\\" + GetFileName(fileName) + newext;
        }
 
        /// <summary>
        /// 文件所在的路徑是否存在
        /// </summary>
        /// <param name="FileName">文件名</param>
        /// <returns></returns>
        public static bool HasFilePath(string FileName)
        {
            return Directory.Exists(GetFilePath(FileName));
        }
 
        /// <summary>
        /// 路徑創建
        /// </summary>
        /// <param name="FileName">文件名</param>
        /// <returns></returns>
        public static bool CreatePath(string path)
        {
            try
            {
                if (!HasFilePath(GetFilePath(path)))
                {
                    CreatePath(GetFilePath(path));
                }
                Directory.CreateDirectory(path);
                return true;
            }
            catch(Exception ee)
            {
                throw new Exception(ee.Message);
            }
        }
 
        /// <summary>
        /// 文件是否存在
        /// </summary>
        /// <param name="FileName">文件名</param>
        /// <returns></returns>
        public static bool HasFile(string FileName)
        {
            return File.Exists(FileName);
        }
        /// <summary>
        /// 取一文件夾下所有的文件名完整路徑,包括子文件夾下的
        /// </summary>
        /// <param name="path">一個路徑字符串</param>
        /// <returns>List<string></returns>
        public static List<string> GetAllFileForPath(string path)
        {
            List<string> lsf = new List<string>();
            try
            {
                if (Directory.Exists(path))
                {
                    List<string> ldirs = GetAllDirForPath(path);
                    foreach (string s in ldirs)
                    {
                        try
                        {
                            if (Directory.Exists(s))
                                lsf.AddRange(Directory.GetFiles(s));
                        }
                        catch (UnauthorizedAccessException ue)
                        {
                           //碰到沒有訪問權限的,跳過
                        }
                        catch (NullReferenceException ne)
                        {
                            //碰到空引用,跳過
                        }
                    }
 
                }
 
                return lsf;
            }
            catch (UnauthorizedAccessException ue)
            {
                return null;
                //這個文件或文件夾沒有辦法訪問,產生空值
            }
            catch (NullReferenceException ne)
            {
                return lsf;
                //本文件夾是空值,返回已有的內容
            }
            catch (Exception ee)
            {
                throw ee;
            }
        }
        /// <summary>
        /// 取一文件夾下所有的文件夾完整路徑,包括子文件夾下的
        /// </summary>
        /// <param name="path">一個路徑字符串</param>
        /// <returns>List<string></returns>
        public static List<string> GetAllDirForPath(string path)
        {
            try
            {
                List<string> dirs = new List<string>();
                try
                {
                    if (!Directory.Exists(path))
                    {
                        throw new Exception(path + "不存在.");
                    }
                    if (!dirs.Contains(path))
                    {
                        dirs.Add(path);
                    }
                }
                catch (UnauthorizedAccessException ue)
                {
                }
                catch (NullReferenceException ne)
                {
 
                }
                if (Directory.GetDirectories(path).Length > 0)
                {
                    foreach (string dir in Directory.GetDirectories(path))
                    {
                        try
                        {
                            if (!dirs.Contains(dir))
                            {
                                dirs.Add(dir);
                            }
                        }
                        catch (UnauthorizedAccessException ue)
                        {
                        }
                        catch (NullReferenceException ne)
                        {
 
                        }
 
 
                        foreach (string s in GetAllDirForPath(dir))
                        {
                            try
                            {
                                if (!dirs.Contains(s))
                                {
                                    dirs.Add(s);
                                }
                            }
                            catch (UnauthorizedAccessException ue)
                            {
                            }
                            catch (NullReferenceException ne)
                            {
 
                            }
                        }
                    }
                }
 
                return dirs;
            }
            catch (UnauthorizedAccessException ue)
            {
                return null;
            }
            catch(Exception ee)
            {
                throw ee;
            }
        }
 
    }
}
posted @ 2012-01-03 08:27  谢堂文(Darren Xie)  阅读(340)  评论(0编辑  收藏  举报