今天在网上看了一个文件操作类没有全部测试先记下来以后进行测试!》
/**
文件操作类
**/
#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
}
}