熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

asp.net文件操作類

2013-11-13 10:14:09  來源: .NET編程 

  今天在網上看了一個文件操作類沒有全部測試先記下來以後進行測試!
   
    /**
   
    文件操作類
   
    **/
   
    #region 引用命名空間
   
    using System;
   
    using SystemCollectionsGeneric;
   
    using SystemText;
   
    using SystemIO;
   
    #endregion
   
    namespace CommonUtilities
   
    {
   
    /// <summary>
   
    /// 文件操作類
   
    /// </summary>
   
    public class FileHelper
   
    {
   
    #region 檢測指定目錄是否存在
   
    /// <summary>
   
    /// 檢測指定目錄是否存在
   
    /// </summary>
   
    /// <param name=directoryPath>目錄的絕對路徑</param>
   
    public static bool IsExistDirectory( string directoryPath )
   
    {
   
    return DirectoryExists( directoryPath )
   
    }
   
    #endregion
   
    #region 檢測指定文件是否存在
   
    /// <summary>
   
    /// 檢測指定文件是否存在如果存在則返回true
   
    /// </summary>
   
    /// <param name=filePath>文件的絕對路徑</param>
   
    public static bool IsExistFile( string filePath )
   
    {
   
    return FileExists( filePath )
   
    }
   
    #endregion
   
    #region 檢測指定目錄是否為空
   
    /// <summary>
   
    /// 檢測指定目錄是否為空
   
    /// </summary>
   
    /// <param name=directoryPath>指定目錄的絕對路徑</param>
   
    public static bool IsEmptyDirectory( string directoryPath )
   
    {
   
    try
   
    {
   
    //判斷是否存在文件
   
    string[] fileNames = GetFileNames( directoryPath )
   
    if ( fileNamesLength >
   
    {
   
    return false;
   
    }
   
    //判斷是否存在文件夾
   
    string[] directoryNames = GetDirectories( directoryPath )
   
    if ( directoryNamesLength >
   
    {
   
    return false;
   
    }
   
    return true;
   
    }
   
    catch ( Exception ex )
   
    {
   
    LogHelperWriteTraceLog( TraceLogLevelError exMessage )
   
    return true;
   
    }
   
    }
   
    #endregion
   
    #region 檢測指定目錄中是否存在指定的文件
   
    /// <summary>
   
    /// 檢測指定目錄中是否存在指定的文件若要搜索子目錄請使用重載方法
   
    /// </summary>
   
    /// <param name=directoryPath>指定目錄的絕對路徑</param>
   
    /// <param name=searchPattern>模式字符串*代表或N個字符?代表個字符
   
    /// 范例Log*xml表示搜索所有以Log開頭的Xml文件</param>
   
    public static bool Contains( string directoryPath string searchPattern )
   
    {
   
    try
   
    {
   
    //獲取指定的文件列表
   
    string[] fileNames = GetFileNames( directoryPath searchPattern false )
   
    //判斷指定文件是否存在
   
    if ( fileNamesLength ==
   
    {
   
    return false;
   
    }
   
    else
   
    {
   
    return true;
   
    }
   
    }
   
    catch ( Exception ex )
   
    {
   
    LogHelperWriteTraceLog( TraceLogLevelError exMessage )
   
    return false;
   
    }
   
    }
   
    /// <summary>
   
    /// 檢測指定目錄中是否存在指定的文件
   
    /// </summary>
   
    /// <param name=directoryPath>指定目錄的絕對路徑</param>
   
    /// <param name=searchPattern>模式字符串*代表或N個字符?代表個字符
   
    /// 范例Log*xml表示搜索所有以Log開頭的Xml文件</param>
   
    /// <param name=isSearchChild>是否搜索子目錄</param>
   
    public static bool Contains( string directoryPath string searchPattern bool isSearchChild )
   
    {
   
    try
   
    {
   
    //獲取指定的文件列表
   
    string[] fileNames = GetFileNames( directoryPath searchPattern true )
   
    //判斷指定文件是否存在
   
    if ( fileNamesLength ==
   
    {
   
    return false;
   
    }
   
    else
   
    {
   
    return true;
   
    }
   
    }
   
    catch ( Exception ex )
   
    {
   
    LogHelperWriteTraceLog( TraceLogLevelError exMessage )
   
    return false;
   
    }
   
    }
   
    #endregion
   
    #region 創建一個目錄
   
    /// <summary>
   
    /// 創建一個目錄
   
    /// </summary>


   
    /// <param name=directoryPath>目錄的絕對路徑</param>
   
    public static void CreateDirectory( string directoryPath )
   
    {
   
    //如果目錄不存在則創建該目錄
   
    if ( !IsExistDirectory( directoryPath ) )
   
    {
   
    DirectoryCreateDirectory( directoryPath )
   
    }
   
    }
   
    #endregion
   
    #region 創建一個文件
   
    /// <summary>
   
    /// 創建一個文件
   
    /// </summary>
   
    /// <param name=filePath>文件的絕對路徑</param>
   
    public static void CreateFile( string filePath )
   
    {
   
    try
   
    {
   
    //如果文件不存在則創建該文件
   
    if ( !IsExistFile( filePath ) )
   
    {
   
    //創建一個FileInfo對象
   
    FileInfo file = new FileInfo( filePath )
   
    //創建文件
   
    FileStream fs = fileCreate()
   
    //關閉文件流
   
    fsClose()
   
    }
   
    }
   
    catch ( Exception ex )
   
    {
   
    LogHelperWriteTraceLog( TraceLogLevelError exMessage )
   
    throw ex;
   
    }
   
    }
   
    /// <summary>
   
    /// 創建一個文件並將字節流寫入文件
   
    /// </summary>
   
    /// <param name=filePath>文件的絕對路徑</param>
   
    /// <param name=buffer>二進制流數據</param>
   
    public static void CreateFile( string filePath byte[] buffer )
   
    {
   
    try
   
    {
   
    //如果文件不存在則創建該文件
   
    if ( !IsExistFile( filePath ) )
   
    {
   
    //創建一個FileInfo對象
   
    FileInfo file = new FileInfo( filePath )
   
    //創建文件
   
    FileStream fs = fileCreate()
   
    //寫入二進制流
   
    fsWrite( buffer bufferLength )
   
    //關閉文件流
   
    fsClose()
   
    }
   
    }
   
    catch ( Exception ex )
   
    {
   
    LogHelperWriteTraceLog( TraceLogLevelError exMessage )
   
    throw ex;
   
    }
   
    }
   
    #endregion
   
    #region 獲取文本文件的行數
   
    /// <summary>
   
    /// 獲取文本文件的行數
   
    /// </summary>
   
    /// <param name=filePath>文件的絕對路徑</param>
   
    public static int GetLineCount( string filePath )
   
    {
   
    //將文本文件的各行讀到一個字符串數組中
   
    string[] rows = FileReadAllLines( filePath )
   
    //返回行數
   
    return rowsLength;
   
    }
   
    #endregion
   
    #region 獲取一個文件的長度
   
    /// <summary>
   
    /// 獲取一個文件的長度單位為Byte
   
    /// </summary>
   
    /// <param name=filePath>文件的絕對路徑</param>
   
    public static int GetFileSize( string filePath )
   
    {
   
    //創建一個文件對象
   
    FileInfo fi = new FileInfo( filePath )
   
    //獲取文件的大小
   
    return (int)fiLength;
   
    }
   
    /// <summary>
   
    /// 獲取一個文件的長度單位為KB
   
    /// </summary>
   
    /// <param name=filePath>文件的路徑</param>
   
    public static double GetFileSizeByKB( string filePath )
   
    {
   
    //創建一個文件對象
   
    FileInfo fi = new FileInfo( filePath )
   
    //獲取文件的大小
   
    return ConvertHelperToDouble( ConvertHelperToDouble( fiLength ) /
   
    }
   
    /// <summary>
   
    /// 獲取一個文件的長度單位為MB
   
    /// </summary>
   
    /// <param name=filePath>文件的路徑</param>
   
    public static double GetFileSizeByMB( string filePath )
   
    {
   
    //創建一個文件對象
   
    FileInfo fi = new FileInfo( filePath )
   
    //獲取文件的大小
   
    return ConvertHelperToDouble( ConvertHelperToDouble( fiLength ) / /
   
    }
   
    #endregion
   
    #region 獲取指定目錄中的文件列表
   
    /// <summary>
   
    /// 獲取指定目錄中所有文件列表
   
    /// </summary>
   
    /// <param name=directoryPath>指定目錄的絕對路徑</param>
   
    public static string[] GetFileNames( string directoryPath )
   
    {
   
    //如果目錄不存在則拋出異常
   
    if ( !IsExistDirectory( directoryPath ) )
   
    {
   
    throw new FileNotFoundException()
   
    }
   
    //獲取文件列表
   
    return DirectoryGetFiles( directoryPath )
   
    }
   
    /// <summary>
   
    /// 獲取指定目錄及子目錄中所有文件列表
   
    /// </summary>
   
    /// <param name=directoryPath>指定目錄的絕對路徑</param>
   
    /// <param name=searchPattern>模式字符串*代表或N個字符?代表個字符
   
    /// 范例Log*xml表示搜索所有以Log開頭的Xml文件</param>
   
    /// <param name=isSearchChild>是否搜索子目錄</param>
   
    public static string[] GetFileNames( string directoryPath string searchPattern bool isSearchChild )
   
    {
   
    //如果目錄不存在則拋出異常
   
    if ( !IsExistDirectory( directoryPath ) )
   
    {
   
    throw new FileNotFoundException()
   
    }
   
    try
   
    {
   
    if ( isSearchChild )
   
    {
   
    return DirectoryGetFiles( directoryPath searchPattern SearchOptionAllDirectories )
   
    }
   
    else
   
    {
   
    return DirectoryGetFiles( directoryPath searchPattern SearchOptionTopDirectoryOnly )
   
    }
   
    }
   
    catch ( IOException ex )
   
    {
   
    throw ex;
   
    }
   
    }
   
    #endregion
   
    #region 獲取指定目錄中的子目錄列表
   
    /// <summary>
   
    /// 獲取指定目錄中所有子目錄列表若要搜索嵌套的子目錄列表請使用重載方法
   
    /// </summary>
   
    /// <param name=directoryPath>指定目錄的絕對路徑</param>
   
    public static string[] GetDirectories( string directoryPath )
   
    {
   
    try
   
    {
   
    return DirectoryGetDirectories( directoryPath )
   
    }
   
    catch ( IOException ex )
   
    {
   
    throw ex;
   
    }
   
    }
   
    /// <summary>
   
    /// 獲取指定目錄及子目錄中所有子目錄列表
   
    /// </summary>
   
    /// <param name=directoryPath>指定目錄的絕對路徑</param>
   
    /// <param name=searchPattern>模式字符串*代表或N個字符?代表個字符
   
    /// 范例Log*xml表示搜索所有以Log開頭的Xml文件</param>
   
    /// <param name=isSearchChild>是否搜索子目錄</param>
   
    public static string[] GetDirectories( string directoryPath string searchPattern bool isSearchChild )
   
    {
   
    try
   
    {
   
    if ( isSearchChild )
   
    {
   
    return DirectoryGetDirectories( directoryPath searchPattern SearchOptionAllDirectories )
   
    }
   
    else
   
    {
   
    return DirectoryGetDirectories( directoryPath searchPattern SearchOptionTopDirectoryOnly )
   
    }
   
    }
   
    catch ( IOException ex )
   
    {
   
    throw ex;
   
    }
   
    }
   
    #endregion
   
    #region 向文本文件寫入內容
   
    /// <summary>
   
    /// 向文本文件中寫入內容
   
    /// </summary>
   
    /// <param name=filePath>文件的絕對路徑</param>
   
    /// <param name=content>寫入的內容</param>
   
    public static void WriteText( string filePath string content )
   
    {
   
    //向文件寫入內容
   
    FileWriteAllText( filePath content )
   
    }
   
    #endregion
   
    #region 向文本文件的尾部追加內容
   
    /// <summary>
   
    /// 向文本文件的尾部追加內容
   
    /// </summary>
   
    /// <param name=filePath>文件的絕對路徑</param>
   
    /// <param name=content>寫入的內容</param>
   
    public static void AppendText( string filePath string content )
   
    {
   
    FileAppendAllText( filePath content )
   
    }
   
    #endregion


   
    #region 將現有文件的內容復制到新文件中
   
    /// <summary>
   
    /// 將源文件的內容復制到目標文件中
   
    /// </summary>
   
    /// <param name=sourceFilePath>源文件的絕對路徑</param>
   
    /// <param name=destFilePath>目標文件的絕對路徑</param>
   
    public static void Copy( string sourceFilePath string destFilePath )
   
    {
   
    FileCopy( sourceFilePath destFilePath true )
   
    }
   
    #endregion
   
    #region 將文件移動到指定目錄
   
    /// <summary>
   
    /// 將文件移動到指定目錄
   
    /// </summary>
   
    /// <param name=sourceFilePath>需要移動的源文件的絕對路徑</param>
   
    /// <param name=descDirectoryPath>移動到的目錄的絕對路徑</param>
   
    public static void Move( string sourceFilePathstring descDirectoryPath )
   
    {
   
    //獲取源文件的名稱
   
    string sourceFileName = GetFileName( sourceFilePath )
   
    if ( IsExistDirectory( descDirectoryPath ) )
   
    {
   
    //如果目標中存在同名文件則刪除
   
    if ( IsExistFile( descDirectoryPath + \\ + sourceFileName ) )
   
    {
   
    DeleteFile( descDirectoryPath + \\ + sourceFileName )
   
    }
   
    //將文件移動到指定目錄
   
    FileMove( sourceFilePath descDirectoryPath + \\ + sourceFileName )
   
    }
   
    }
   
    #endregion
   
    #region 將流讀取到緩沖區中
   
    /// <summary>
   
    /// 將流讀取到緩沖區中
   
    /// </summary>
   
    /// <param name=stream>原始流</param>
   
    public static byte[] StreamToBytes( Stream stream )
   
    {
   
    try
   
    {
   
    //創建緩沖區
   
    byte[] buffer = new byte[streamLength];
   
    //讀取流
   
    streamRead( buffer ConvertHelperToInt( streamLength ) )
   
    //返回流
   
    return buffer;
   
    }
   
    catch ( Exception ex )
   
    {
   
    LogHelperWriteTraceLog( TraceLogLevelError exMessage )
   
    throw ex;
   
    }
   
    finally
   
    {
   
    //關閉流
   
    streamClose()
   
    }
   
    }
   
    #endregion
   
    #region 將文件讀取到緩沖區中
   
    /// <summary>
   
    /// 將文件讀取到緩沖區中
   
    /// </summary>
   
    /// <param name=filePath>文件的絕對路徑</param>
   
    public static byte[] FileToBytes( string filePath )
   
    {
   
    //獲取文件的大小
   
    int fileSize = GetFileSize( filePath )
   
    //創建一個臨時緩沖區
   
    byte[] buffer = new byte[fileSize];
   
    //創建一個文件流
   
    FileInfo fi = new FileInfo( filePath )
   
    FileStream fs = fiOpen( FileModeOpen )
   
    try
   
    {
   
    //將文件流讀入緩沖區
   
    fsRead( buffer fileSize )
   
    return buffer;
   
    }
   
    catch ( IOException ex )
   
    {
   
    LogHelperWriteTraceLog( TraceLogLevelError exMessage )
   
    throw ex;
   
    }
   
    finally
   
    {
   
    //關閉文件流
   
    fsClose()
   
    }
   
    }
   
    #endregion
   
    #region 將文件讀取到字符串中
   
    /// <summary>
   
    /// 將文件讀取到字符串中
   
    /// </summary>
   
    /// <param name=filePath>文件的絕對路徑</param>
   
    public static string FileToString( string filePath )
   
    {
   
    return FileToString( filePath BaseInfoDefaultEncoding )
   
    }
   
    /// <summary>
   
    /// 將文件讀取到字符串中
   
    /// </summary>
   
    /// <param name=filePath>文件的絕對路徑</param>
   
    /// <param name=encoding>字符編碼</param>
   
    public static string FileToString( string filePathEncoding encoding )
   
    {
   
    //創建流讀取器
   
    StreamReader reader = new StreamReader( filePath encoding )
   
    try
   
    {
   
    //讀取流
   
    return readerReadToEnd()
   
    }
   
    catch ( Exception ex )
   
    {
   
    LogHelperWriteTraceLog( TraceLogLevelError exMessage )
   
    throw ex;
   
    }
   
    finally
   
    {
   
    //關閉流讀取器
   
    readerClose()
   
    }
   
    }
   
    #endregion
   
    #region 從文件的絕對路徑中獲取文件名( 包含擴展名 )
   
    /// <summary>
   
    /// 從文件的絕對路徑中獲取文件名( 包含擴展名 )
   
    /// </summary>
   
    /// <param name=filePath>文件的絕對路徑</param>
   
    public static string GetFileName( string filePath )
   
    {
   
    //獲取文件的名稱
   
    FileInfo fi = new FileInfo( filePath )
   
    return fiName;
   
    }
   
    #endregion
   
    #region 從文件的絕對路徑中獲取文件名( 不包含擴展名 )
   
    /// <summary>
   
    /// 從文件的絕對路徑中獲取文件名( 不包含擴展名 )
   
    /// </summary>
   
    /// <param name=filePath>文件的絕對路徑</param>
   
    public static string GetFileNameNoExtension( string filePath )
   
    {
   
    //獲取文件的名稱
   
    FileInfo fi = new FileInfo( filePath )
   
    return fiNameSplit( )[];
   
    }
   
    #endregion
   
    #region 從文件的絕對路徑中獲取擴展名
   
    /// <summary>
   
    /// 從文件的絕對路徑中獲取擴展名
   
    /// </summary>
   
    /// <param name=filePath>文件的絕對路徑</param>
   
    public static string GetExtension( string filePath )
   
    {
   
    //獲取文件的名稱
   
    FileInfo fi = new FileInfo( filePath )
   
    return fiExtension;
   
    }
   
    #endregion
   
    #region 清空指定目錄
   
    /// <summary>
   
    /// 清空指定目錄下所有文件及子目錄但該目錄依然保存
   
    /// </summary>
   
    /// <param name=directoryPath>指定目錄的絕對路徑</param>
   
    public static void ClearDirectory( string directoryPath )
   
    {
   
    if ( IsExistDirectory( directoryPath ) )
   
    {
   
    //刪除目錄中所有的文件
   
    string[] fileNames = GetFileNames( directoryPath )
   
    for ( int i = ; i < fileNamesLength; i++ )
   
    {
   
    DeleteFile( fileNames[i] )
   
    }
   
    //刪除目錄中所有的子目錄
   
    string[] directoryNames = GetDirectories( directoryPath )
   
    for ( int i = ; i < directoryNamesLength; i++ )
   
    {
   
    DeleteDirectory( directoryNames[i] )
   
    }
   
    }
   
    }
   
    #endregion
   
    #region 清空文件內容
   
    /// <summary>
   
    /// 清空文件內容
   
    /// </summary>
   
    /// <param name=filePath>文件的絕對路徑</param>
   
    public static void ClearFile( string filePath )
   
    {
   
    //刪除文件
   
    FileDelete( filePath )
   
    //重新創建該文件
   
    CreateFile( filePath )
   
    }
   
    #endregion
   
    #region 刪除指定文件
   
    /// <summary>
   
    /// 刪除指定文件
   
    /// </summary>
   
    /// <param name=filePath>文件的絕對路徑</param>
   
    public static void DeleteFile( string filePath )
   
    {
   
    if ( IsExistFile( filePath ) )
   
    {
   
    FileDelete( filePath )
   
    }
   
    }
   
    #endregion
   
    #region 刪除指定目錄
   
    /// <summary>
   
    /// 刪除指定目錄及其所有子目錄
   
    /// </summary>
   
    /// <param name=directoryPath>指定目錄的絕對路徑</param>
   
    public static void DeleteDirectory( string directoryPath )
   
    {
   
    if ( IsExistDirectory( directoryPath ) )
   
    {
   
    DirectoryDelete( directoryPath true )
   
    }
   
    }
   
    #endregion
   
    }
   
    }


From:http://tw.wingwit.com/Article/program/net/201311/12996.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.