天天看點

C# 檔案操作類

<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

----------------------------------------------------------------*/

/// &lt;summary&gt;

/// 判斷檔案是否存在

/// &lt;/summary&gt;

/// &lt;param name="fileName"&gt;&lt;/param&gt;

/// &lt;returns&gt;&lt;/returns&gt;

public static bool Exists(string fileName)

if (fileName == null || fileName.Trim() == "")

return false;

if (File.Exists(fileName))

return true;

/// 建立檔案夾

/// &lt;param name="dirName"&gt;&lt;/param&gt;

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();

/// 寫檔案

/// &lt;param name="fileName"&gt;檔案名&lt;/param&gt;

/// &lt;param name="content"&gt;檔案内容&lt;/param&gt;

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);

/// 寫入一行

/// &lt;param name="content"&gt;内容&lt;/param&gt;

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);

/// 複制目錄

/// &lt;param name="fromDir"&gt;被複制的目錄&lt;/param&gt;

/// &lt;param name="toDir"&gt;複制到的目錄&lt;/param&gt;

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);

/// &lt;param name="rootDir"&gt;被複制的根目錄&lt;/param&gt;

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);

/// 删除檔案

/// &lt;param name="fileName"&gt;檔案的完整路徑&lt;/param&gt;

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();

/// 删除目錄

/// &lt;param name="dir"&gt;制定目錄&lt;/param&gt;

/// &lt;param name="onlyDir"&gt;是否隻删除目錄&lt;/param&gt;

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 &amp;&amp; dirInfo.GetDirectories().Length==0)

Directory.Delete(dir);

if (!onlyDir)

else

DeleteDir(dirInfo);

/// 在指定的目錄中查找檔案

/// &lt;param name="dir"&gt;目錄&lt;/param&gt;

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>