<a></a>
using System;
using System.IO;
namespace Utils
{
public class IOHelper
public IOHelper();
public static bool CopyDir(DirectoryInfo fromDir, string toDir); //複制目錄
public static bool CopyDir(string fromDir, string toDir); //複制目錄
public static bool CreateDir(string dirName); //建立目錄
public static bool CreateFile(string fileName); //建立檔案
public static void DeleteDir(DirectoryInfo dir); //删除目錄 (如果目錄中存在檔案就删除)
public static bool DeleteDir(string dir, bool onlyDir); //删除目錄
public static bool DeleteFile(string fileName);//删除檔案
public static bool Exists(string fileName);//判斷檔案是否存在
public static bool FindFile(DirectoryInfo dir, string fileName);//在指定的目錄中查找檔案
public static bool FindFile(string dir, string fileName);//在指定的目錄中查找檔案
public static string Read(string fileName);//讀檔案的全部内容
public static string ReadLine(string fileName);//讀第一行資料
public static bool Write(string fileName, string content);//寫入指定的内容
public static bool WriteLine(string fileName, string content);//寫一行資料
}
using System.Text;
/*----------------------------------------------------------------
//檔案名:IOHelper
//檔案功能描述:檔案操作類
//
//建立人:陳太漢
//建立日期:2011/05/18
----------------------------------------------------------------*/
/// <summary>
/// 判斷檔案是否存在
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public static bool Exists(string fileName)
if (fileName == null || fileName.Trim() == "")
return false;
if (File.Exists(fileName))
return true;
/// 建立檔案夾
/// <param name="dirName"></param>
public static bool CreateDir(string dirName)
if (!Directory.Exists(dirName))
Directory.CreateDirectory(dirName);
/// 建立檔案
public static bool CreateFile(string fileName)
if (!File.Exists(fileName))
FileStream fs = File.Create(fileName);
fs.Close();
fs.Dispose();
/// 讀檔案内容
public static string Read(string fileName)
if (!Exists(fileName))
return null;
//将檔案資訊讀入流中
using (FileStream fs = new FileStream(fileName, FileMode.Open))
return new StreamReader(fs).ReadToEnd();
public static string ReadLine(string fileName)
return new StreamReader(fs).ReadLine();
/// 寫檔案
/// <param name="fileName">檔案名</param>
/// <param name="content">檔案内容</param>
public static bool Write(string fileName, string content)
if (!Exists(fileName) || content == null)
using (FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate))
lock (fs)//鎖住流
if (!fs.CanWrite)
throw new System.Security.SecurityException("檔案fileName=" + fileName + "是隻讀檔案不能寫入!");
byte[] buffer = Encoding.Default.GetBytes(content);
fs.Write(buffer, 0, buffer.Length);
/// 寫入一行
/// <param name="content">内容</param>
public static bool WriteLine(string fileName, string content)
using (FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate | FileMode.Append))
lock (fs)
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine(content);
sw.Dispose();
sw.Close();
public static bool CopyDir(DirectoryInfo fromDir, string toDir)
return CopyDir(fromDir, toDir, fromDir.FullName);
/// 複制目錄
/// <param name="fromDir">被複制的目錄</param>
/// <param name="toDir">複制到的目錄</param>
public static bool CopyDir(string fromDir, string toDir)
if (fromDir == null || toDir == null)
throw new NullReferenceException("參數為空");
if (fromDir == toDir)
throw new Exception("兩個目錄都是" + fromDir);
if (!Directory.Exists(fromDir))
throw new IOException("目錄fromDir="+fromDir+"不存在");
DirectoryInfo dir = new DirectoryInfo(fromDir);
return CopyDir(dir, toDir, dir.FullName);
/// <param name="rootDir">被複制的根目錄</param>
private static bool CopyDir(DirectoryInfo fromDir, string toDir, string rootDir)
string filePath = string.Empty;
foreach (FileInfo f in fromDir.GetFiles())
filePath = toDir + f.FullName.Substring(rootDir.Length);
string newDir = filePath.Substring(0, filePath.LastIndexOf("\\"));
CreateDir(newDir);
File.Copy(f.FullName, filePath, true);
foreach (DirectoryInfo dir in fromDir.GetDirectories())
CopyDir(dir, toDir, rootDir);
/// 删除檔案
/// <param name="fileName">檔案的完整路徑</param>
public static bool DeleteFile(string fileName)
if (Exists(fileName))
File.Delete(fileName);
public static void DeleteDir(DirectoryInfo dir)
if (dir == null)
throw new NullReferenceException("目錄不存在");
foreach (DirectoryInfo d in dir.GetDirectories())
DeleteDir(d);
foreach (FileInfo f in dir.GetFiles())
DeleteFile(f.FullName);
dir.Delete();
/// 删除目錄
/// <param name="dir">制定目錄</param>
/// <param name="onlyDir">是否隻删除目錄</param>
public static bool DeleteDir(string dir, bool onlyDir)
if (dir == null || dir.Trim() == "")
throw new NullReferenceException("目錄dir=" + dir + "不存在");
if (!Directory.Exists(dir))
DirectoryInfo dirInfo = new DirectoryInfo(dir);
if (dirInfo.GetFiles().Length == 0 && dirInfo.GetDirectories().Length==0)
Directory.Delete(dir);
if (!onlyDir)
else
DeleteDir(dirInfo);
/// 在指定的目錄中查找檔案
/// <param name="dir">目錄</param>
public static bool FindFile(string dir, string fileName)
if (dir == null || dir.Trim() == "" || fileName == null || fileName.Trim() == "" || !Directory.Exists(dir))
return FindFile(dirInfo, fileName);
public static bool FindFile(DirectoryInfo dir, string fileName)
if (File.Exists(d.FullName + "\\" + fileName))
FindFile(d,fileName);
<a>本文轉自啊漢部落格園部落格,原文連結:http://www.cnblogs.com/hlxs/archive/2011/05/18/2087974.html</a>