中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

C#訪問文件路徑通用類

2018-07-20    來源:open-open

容器云強(qiáng)勢上線!快速搭建集群,上萬Linux鏡像隨意使用

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.IO;

 

 

namespace Utility

{

    /// <summary>

    /// @Author:梁繼龍

    /// @Date:2012/8/1

    /// @Email:jilongliang1988ora@163.com

    /// @Description:文件處理類

    /// </summary>

    public class AccessDirFileHelper

    {

        public static AccessDirFileHelper instance = null;

        private static readonly object lockObj = new object();

        protected static System.Reflection.Assembly assembly = null; //反射 

        /// <summary>

        /// 單例模式

        /// </summary>

        /// <returns></returns>

        public static AccessDirFileHelper GetInstance()

        {

            //lock (AccessFileHelper.instance){ }

            if (instance == null)

            {

                lock (lockObj)

                {

                    instance = new AccessDirFileHelper();

                }

            }

            return instance;

        }

 

        /// <summary>

        /// 獲取當(dāng)前進(jìn)程的完整路徑,包含文件名(進(jìn)程名)

        /// result: X:\xxx\xxx\xxx.exe (.exe文件所在的目錄+.exe文件名

        /// </summary>

        /// <returns></returns>

        public string GetLocalProcessFileName()

        {

            try

            {

                return this.GetType().Assembly.Location;

            }

            catch (Exception ex)

            {

                throw ex;

            }

        }

 

        /// <summary>

        /// 獲取新的 Process 組件并將其與當(dāng)前活動(dòng)的進(jìn)程關(guān)聯(lián)的主模塊的完整路徑,包含文件名(進(jìn)程名).

        //result: X:\xxx\xxx\xxx.exe (.exe文件所在的目錄+.exe文件名)

        /// </summary>

        /// <returns></returns>

        public string GetCurrentProcessFileNamePath()

        {

            try

            {

                return System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;

            }

            catch (Exception ex)

            {

                throw ex;

            }

        }

 

        /// <summary>

        /// 獲取和設(shè)置當(dāng)前目錄(即該進(jìn)程從中啟動(dòng)的目錄)的完全限定路徑.

        /// result: X:\xxx\xxx (.exe文件所在的目錄)

        /// </summary>

        /// <returns></returns>

        public String GetCurrentEnvironmentDirectoryPath()

        {

            try

            {

                return System.Environment.CurrentDirectory;

            }

            catch (Exception ex)

            {

                throw ex;

            }

        }

 

        /// <summary>

        /// 獲取當(dāng)前 Thread 的當(dāng)前應(yīng)用程序域的基目錄,它由程序集沖突解決程序用來探測程序集。

        ///string str = System.AppDomain.CurrentDomain.BaseDirectory;

        ///result: X:\xxx\xxx\ (.exe文件所在的目錄+"\")

        ///Example:用來判斷winfrom會少一個(gè)Debug  E:\\ASP.NET\\MyApp\\WebApp\\bin\\Debug\\bin\\Utility.dll"  web

        ///Example:用來判斷winfrom會多一個(gè)Debug  E:\\ASP.NET\\MyApp\\WinApp\\bin\\Debug\\Utility.dll"  winform

        ///此方法一般判斷一個(gè)解決方案啟動(dòng)是web還是winform讀取文件(dll,config,txt等..)看情況定

        /// </summary>

        public string GetCurrentDomainBaseDirectory()

        {

            try

            {   //效果一樣

                //System.Threading.Thread.GetDomain().BaseDirectory

                return System.AppDomain.CurrentDomain.BaseDirectory;

            }

            catch (Exception e)

            {

                throw e;

            }

        }

 

        /// <summary>

        /// 獲取和設(shè)置包含該應(yīng)用程序的目錄的名稱。

        ///string str = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;

        ///result: X:\xxx\xxx\ (.exe文件所在的目錄+"\")

        /// </summary>

        /// <returns></returns>

        public string GetCurrentDomainSetupInformationName()

        {

            try

            {

                return System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;

            }

            catch (Exception ex)

            {

                throw ex;

            }

        }

 

        /// <summary>

        /// 獲取啟動(dòng)了應(yīng)用程序的可執(zhí)行文件的路徑,不包括可執(zhí)行文件的名稱

        /// string str = System.Windows.Forms.Application.StartupPath;

        /// result: X:\xxx\xxx (.exe文件所在的目錄)

        /// </summary>

        /// <returns></returns>

        public  string GetWindowsApplicationStartupPath()

        {

            try

            {

                return System.Windows.Forms.Application.StartupPath;

            }

            catch (Exception e)

            {

                throw e;

            }

        }

 

        /// <summary>

        ///獲取啟動(dòng)了應(yīng)用程序的可執(zhí)行文件的路徑,包括可執(zhí)行文件的名稱。

        ///string str = System.Windows.Forms.Application.ExecutablePath;

        ///result: X:\xxx\xxx\xxx.exe (.exe文件所在的目錄+.exe文件名)

        /// </summary>

        /// <returns></returns>

        public string GetWindowsExecutablePath()

        {

            try

            {

                return System.Windows.Forms.Application.ExecutablePath;

            }

            catch (Exception ex)

            {

                throw ex;

            }

        }

 

        /// <summary>

        /// 獲取應(yīng)用程序的當(dāng)前工作目錄(不可靠)

        /// /string str = System.IO.Directory.GetCurrentDirectory();

        /// result: X:\xxx\xxx (.exe文件所在的目錄)

        /// </summary>

        /// <returns></returns>

        public string GetCurrentDirectory()

        {

            try

            {

                return System.IO.Directory.GetCurrentDirectory();

            }

            catch (Exception ex)

            {

                throw ex;

            }

        }

        /// <summary>

        /// 這個(gè)方法的意思是:在同一個(gè)解決方案里面有兩個(gè)工程,啟動(dòng)的時(shí)候

        /// 去判斷哪個(gè)工程是Winform或者是Web的配置

        ///Example:E:\\ASP.NET\\MyApp\\WinApp\\bin\\Debug\\MyApp.vshost.exe.Config" //winform

        ///Example:"E:\\ASP.NET\\MyApp\\WebApp\\web.config"  //web

        ///從后面的配置截取Example:String index=Path3.Substring(config.Length - 8);截取

        ///后面字符串判去判斷,最好把都轉(zhuǎn)換成小寫或者大寫

        ///index.ToUpper()="E.CONFIG"   /   index.ToLower()=="e.config"

        /// </summary>

        /// <returns></returns>

        public System.Reflection.Assembly GetCurrentDomainConfigurationFile(string executeWinformConfig, string executeWebConfig)

        {

            try

            {

                string config = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;

                string index = config.Substring(config.Length - 8);

 

                if (index.ToLower() == "e.config")  //把截取到的字符串轉(zhuǎn)為為小寫

                {

                    assembly = System.Reflection.Assembly.LoadFile(executeWinformConfig); //加載dll文件

                }

                if (index.ToLower() == "b.config")

                {

                    assembly = System.Reflection.Assembly.LoadFile(executeWebConfig); //加載dll文件

                }

                return assembly;

            }

            catch (Exception ex)

            {

                throw ex;

            }

        }

        /// <summary>

        /// 無參數(shù)的GetCurrentDomainConfigurationFile方法

        /// GetCurrentDomainConfigurationFile

        /// </summary>

        /// <returns></returns>

        public string GetCurrentDomainConfigurationFile()

        {

            try

            {

                return AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;

            }

            catch (Exception ex)

            {

                throw ex;

            }

        }

 

        /// <summary>

        /// Application.StartupPath與AppDomain.CurrentDomain.BaseDirectory都是判斷

        /// 當(dāng)前啟動(dòng)的工程,并體現(xiàn)能找到

        /// Example:E:\\ASP.NET\\MyApp\\MyApp\\bin\\Debug路徑下面,唯有不同的就是

        /// AppDomain.CurrentDomain.BaseDirectory多了個(gè) \\

        /// Application.StartupPath而且是System.Windows.Forms

        /// </summary>

        /// <returns></returns>

        public string GetStartupPath()

        {

            try

            {

                return System.Windows.Forms.Application.StartupPath;

            }

            catch (Exception)

            {

                throw;

            }

        }

 

        /// <summary>

        /// 獲取文件的大小,一般指文件有多少個(gè)字節(jié)

        /// </summary>

        /// <param name="fileName"></param>

        /// <returns></returns>

        public string GetFileSize(string fileName)

        {

            try

            {

                if (File.Exists(fileName))

                {

                    return Convert.ToString(new FileInfo(fileName).Length);

                }

                else

                    return fileName;

            }

            catch (Exception)

            {

                throw;

            }

        }

        ///<summary>

        ///在卸載程序獲取系統(tǒng)安裝的目錄:

        ///System.Reflection.Assembly curPath = System.Reflection.Assembly.GetExecutingAssembly();

        /// string path=curPath.Location;//得到安裝程序類SetupLibrary文件的路徑,獲取這個(gè)文件路徑

        ///所在的目錄即得到安裝程序的目錄;

        ///</summary>

        /// <returns></returns>

        public String GetExecutingAssemblyDirectory()

        {

            try

            {

                System.Reflection.Assembly curPath = System.Reflection.Assembly.GetExecutingAssembly();

                string path = curPath.Location;

                return path;

            }

            catch (Exception ex)

            {

                throw ex;

            }

        }

 

 

        #region

        

        /// <summary>

        /// 創(chuàng)建目錄

        /// </summary>

        /// <param name="dir">此地路徑相對站點(diǎn)而言</param>

        public static void CreateDir(string dir)

        {

            if (dir.Length == 0) return;

            if (!System.IO.Directory.Exists(System.Web.HttpContext.Current.Server.MapPath(dir)))

                System.IO.Directory.CreateDirectory(System.Web.HttpContext.Current.Server.MapPath(dir));

        }

        /// <summary>

        /// 創(chuàng)建目錄路徑

        /// </summary>

        /// <param name="folderPath">物理路徑</param>

        public static void CreateFolder(string folderPath)

        {

            if (!System.IO.Directory.Exists(folderPath))

                System.IO.Directory.CreateDirectory(folderPath);

        }

        /// <summary>

        /// 刪除目錄

        /// </summary>

        /// <param name="dir">此地路徑相對站點(diǎn)而言</param>

        public static void DeleteDir(string dir)

        {

            if (dir.Length == 0) return;

            if (System.IO.Directory.Exists(System.Web.HttpContext.Current.Server.MapPath(dir)))

                System.IO.Directory.Delete(System.Web.HttpContext.Current.Server.MapPath(dir), true);

        }

        /// <summary>

        /// 判斷文件是否存在

        /// </summary>

        /// <param name="file">格式:a/b.htm,相對根目錄</param>

        /// <returns></returns>

        public static bool FileExists(string file)

        {

            if (File.Exists(System.Web.HttpContext.Current.Server.MapPath(file)))

                return true;

            else

                return false;

        }

        /// <summary>

        /// 讀取文件內(nèi)容

        /// </summary>

        /// <param name="file">格式:a/b.htm,相對根目錄</param>

        /// <returns></returns>

        public static string ReadFile(string file)

        {

            if (!FileExists(file))

                return "";

            try

            {

                System.IO.StreamReader sr = new System.IO.StreamReader(System.Web.HttpContext.Current.Server.MapPath(file), System.Text.Encoding.UTF8);

                string str = sr.ReadToEnd();

                sr.Close();

                return str;

            }

            catch (Exception ex)

            {

                throw ex;

            }

        }

        /// <summary>

        /// 保存為不帶Bom的文件

        /// </summary>

        /// <param name="TxtStr"></param>

        /// <param name="tempDir">格式:a/b.htm,相對根目錄</param>

        public static void SaveFile(string TxtStr, string tempDir)

        {

            SaveFile(TxtStr, tempDir, true);

        }

        /// <summary>

        /// 保存文件內(nèi)容,自動(dòng)創(chuàng)建目錄

        /// </summary>

        /// <param name="TxtStr"></param>

        /// <param name="tempDir">格式:a/b.htm,相對根目錄</param>

        /// <param name="noBom"></param>

        public static void SaveFile(string TxtStr, string tempDir, bool noBom)

        {

            try

            {

                CreateDir(GetFolderPath(true, tempDir));

                System.IO.StreamWriter sw;

                if (noBom)

                    sw = new System.IO.StreamWriter(System.Web.HttpContext.Current.Server.MapPath(tempDir), false, new System.Text.UTF8Encoding(false));

                else

                    sw = new System.IO.StreamWriter(System.Web.HttpContext.Current.Server.MapPath(tempDir), false, System.Text.Encoding.UTF8);

 

                sw.Write(TxtStr);

                sw.Close();

            }

            catch (Exception ex)

            {

                throw ex;

            }

        }

        /// <summary>

        /// 復(fù)制文件

        /// 這個(gè)方法在6.0版本后改寫,雖看似比前面的版本冗長,但避免了file2文件一直被占用的問題

        /// </summary>

        /// <param name="file1"></param>

        /// <param name="file2"></param>

        /// <param name="overwrite">如果已經(jīng)存在是否覆蓋?</param>

        public static void CopyFile(string file1, string file2, bool overwrite)

        {

            if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath(file1)))

            {

                if (overwrite)

                    System.IO.File.Copy(System.Web.HttpContext.Current.Server.MapPath(file1), System.Web.HttpContext.Current.Server.MapPath(file2), true);

                else

                {

                    if (!System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath(file2)))

                        System.IO.File.Copy(System.Web.HttpContext.Current.Server.MapPath(file1), System.Web.HttpContext.Current.Server.MapPath(file2));

                }

            }

        }

        /// <summary>

        /// 刪除文件

        /// </summary>

        /// <param name="file">此地路徑相對程序路徑而言</param>

        public static void DeleteFile(string file)

        {

            if (file.Length == 0) return;

            if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath(file)))

                System.IO.File.Delete(System.Web.HttpContext.Current.Server.MapPath(file));

        }

        /// <summary>

        /// 獲得文件的目錄路徑

        /// </summary>

        /// <param name="filePath">文件路徑</param>

        /// <returns>以\結(jié)尾</returns>

        public static string GetFolderPath(string filePath)

        {

            return GetFolderPath(false, filePath);

        }

        /// <summary>

        /// 獲得文件的目錄路徑

        /// </summary>

        /// <param name="isUrl">是否是網(wǎng)址</param>

        /// <param name="filePath">文件路徑</param>

        /// <returns>以\或/結(jié)尾</returns>

        public static string GetFolderPath(bool isUrl, string filePath)

        {

            if (isUrl)

                return filePath.Substring(0, filePath.LastIndexOf("/") + 1);

            else

                return filePath.Substring(0, filePath.LastIndexOf("\\") + 1);

        }

        /// <summary>

        /// 獲得文件的名稱

        /// </summary>

        /// <param name="filePath"></param>

        /// <returns></returns>

        public static string GetFileName(string filePath)

        {

            return GetFileName(false, filePath);

        }

        /// <summary>

        /// 獲得文件的名稱

        /// </summary>

        /// <param name="isUrl">是否是網(wǎng)址</param>

        /// <param name="filePath"></param>

        /// <returns></returns>

        public static string GetFileName(bool isUrl, string filePath)

        {

            if (isUrl)

                return filePath.Substring(filePath.LastIndexOf("/") + 1, filePath.Length - filePath.LastIndexOf("/") - 1);

            else

                return filePath.Substring(filePath.LastIndexOf("\\") + 1, filePath.Length - filePath.LastIndexOf("\\") - 1);

        }

        /// <summary>

        /// 獲得文件的后綴

        /// 不帶點(diǎn),小寫

        /// </summary>

        /// <param name="filePath"></param>

        /// <returns></returns>

        public static string GetFileExt(string filePath)

        {

            return filePath.Substring(filePath.LastIndexOf(".") + 1, filePath.Length - filePath.LastIndexOf(".") - 1).ToLower();

        }

        /// <summary>

        /// 目錄拷貝

        /// </summary>

        /// <param name="OldDir"></param>

        /// <param name="NewDir"></param>

        public static void CopyDir(string OldDir, string NewDir)

        {

            DirectoryInfo OldDirectory = new DirectoryInfo(OldDir);

            DirectoryInfo NewDirectory = new DirectoryInfo(NewDir);

            CopyDir(OldDirectory, NewDirectory);

        }

        private static void CopyDir(DirectoryInfo OldDirectory, DirectoryInfo NewDirectory)

        {

            string NewDirectoryFullName = NewDirectory.FullName + "\\" + OldDirectory.Name;

 

            if (!Directory.Exists(NewDirectoryFullName))

                Directory.CreateDirectory(NewDirectoryFullName);

 

            FileInfo[] OldFileAry = OldDirectory.GetFiles();

            foreach (FileInfo aFile in OldFileAry)

                File.Copy(aFile.FullName, NewDirectoryFullName + "\\" + aFile.Name, true);

 

            DirectoryInfo[] OldDirectoryAry = OldDirectory.GetDirectories();

            foreach (DirectoryInfo aOldDirectory in OldDirectoryAry)

            {

                DirectoryInfo aNewDirectory = new DirectoryInfo(NewDirectoryFullName);

                CopyDir(aOldDirectory, aNewDirectory);

            }

        }

        /// <summary>

        /// 目錄刪除

        /// </summary>

        /// <param name="OldDir"></param>

        public static void DelDir(string OldDir)

        {

            DirectoryInfo OldDirectory = new DirectoryInfo(OldDir);

            OldDirectory.Delete(true);

        }

 

        /// <summary>

        /// 目錄剪切

        /// </summary>

        /// <param name="OldDirectory"></param>

        /// <param name="NewDirectory"></param>

        public static void CopyAndDelDir(string OldDirectory, string NewDirectory)

        {

            CopyDir(OldDirectory, NewDirectory);

            DelDir(OldDirectory);

        }

        /// <summary>

        /// 文件下載

        /// </summary>

        /// <param name="_Request"></param>

        /// <param name="_Response"></param>

        /// <param name="_fullPath">源文件路徑</param>

        /// <param name="_speed"></param>

        /// <returns></returns>

        public static bool DownloadFile(System.Web.HttpRequest _Request, System.Web.HttpResponse _Response, string _fullPath, long _speed)

        {

            string _fileName = GetFileName(false, _fullPath);

            try

            {

                FileStream myFile = new FileStream(_fullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

                BinaryReader br = new BinaryReader(myFile);

                try

                {

                    _Response.AddHeader("Accept-Ranges", "bytes");

                    _Response.Buffer = false;

                    long fileLength = myFile.Length;

                    long startBytes = 0;

 

                    double pack = 10240; //10K bytes

                    //int sleep = 200;   //每秒5次   即5*10K bytes每秒

                    int sleep = (int)Math.Floor(1000 * pack / _speed) + 1;

                    if (_Request.Headers["Range"] != null)

                    {

                        _Response.StatusCode = 206;

                        string[] range = _Request.Headers["Range"].Split(new char[] { '=', '-' });

                        startBytes = Convert.ToInt64(range[1]);

                    }

                    _Response.AddHeader("Content-Length", (fileLength - startBytes).ToString());

                    _Response.AddHeader("Connection", "Keep-Alive");

                    _Response.ContentType = "application/octet-stream";

                    _Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(_fileName, System.Text.Encoding.UTF8));

 

                    br.BaseStream.Seek(startBytes, SeekOrigin.Begin);

                    int maxCount = (int)Math.Floor((fileLength - startBytes) / pack) + 1;

 

                    for (int i = 0; i < maxCount; i++)

                    {

                        if (_Response.IsClientConnected)

                        {

                            _Response.BinaryWrite(br.ReadBytes(int.Parse(pack.ToString())));

                            System.Threading.Thread.Sleep(sleep);

                        }

                        else

                        {

                            i = maxCount;

                        }

                    }

                }

                catch

                {

                    return false;

                }

                finally

                {

                    br.Close();

                    myFile.Close();

                }

            }

            catch

            {

                return false;

            }

            return true;

        }

        #endregion

 

    }

}

標(biāo)簽: isp ssd

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:簡體轉(zhuǎn)換成繁體

下一篇:C++STL之希爾排序