C# 檔案操作類

來源:互聯網
上載者:User

標籤:

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;
using System.Text;
using System.IO;
/*----------------------------------------------------------------
//檔案名稱:IOHelper
//檔案功能描述:檔案操作類
//
//建立人:陳太漢
//建立日期:2011/05/18

----------------------------------------------------------------*/
namespace Utils
{
public class IOHelper
{
/// <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;
}

return false;
}


/// <summary>
/// 建立檔案夾
/// </summary>
/// <param name="dirName"></param>
/// <returns></returns>
public static bool CreateDir(string dirName)
{
if (!Directory.Exists(dirName))
{
Directory.CreateDirectory(dirName);
}
return true;
}


/// <summary>
/// 建立檔案
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public static bool CreateFile(string fileName)
{
if (!File.Exists(fileName))
{
FileStream fs = File.Create(fileName);
fs.Close();
fs.Dispose();
}
return true;

}


/// <summary>
/// 讀檔案內容
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
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)
{
if (!Exists(fileName))
{
return null;
}
using (FileStream fs = new FileStream(fileName, FileMode.Open))
{
return new StreamReader(fs).ReadLine();
}
}

/// <summary>
/// 寫檔案
/// </summary>
/// <param name="fileName">檔案名稱</param>
/// <param name="content">檔案內容</param>
/// <returns></returns>
public static bool Write(string fileName, string content)
{
if (!Exists(fileName) || content == null)
{
return false;
}

//將檔案資訊讀入流中
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);
return true;
}
}
}


/// <summary>
/// 寫入一行
/// </summary>
/// <param name="fileName">檔案名稱</param>
/// <param name="content">內容</param>
/// <returns></returns>
public static bool WriteLine(string fileName, string content)
{
using (FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate | FileMode.Append))
{
lock (fs)
{
if (!fs.CanWrite)
{
throw new System.Security.SecurityException("檔案fileName=" + fileName + "是唯讀檔案不能寫入!");
}

StreamWriter sw = new StreamWriter(fs);
sw.WriteLine(content);
sw.Dispose();
sw.Close();
return true;
}
}
}

public static bool CopyDir(DirectoryInfo fromDir, string toDir)
{
return CopyDir(fromDir, toDir, fromDir.FullName);
}


/// <summary>
/// 複製目錄
/// </summary>
/// <param name="fromDir">被複製的目錄</param>
/// <param name="toDir">複製到的目錄</param>
/// <returns></returns>
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);
}


/// <summary>
/// 複製目錄
/// </summary>
/// <param name="fromDir">被複製的目錄</param>
/// <param name="toDir">複製到的目錄</param>
/// <param name="rootDir">被複製的根目錄</param>
/// <returns></returns>
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);
}

return true;
}


/// <summary>
/// 刪除檔案
/// </summary>
/// <param name="fileName">檔案的完整路徑</param>
/// <returns></returns>
public static bool DeleteFile(string fileName)
{
if (Exists(fileName))
{
File.Delete(fileName);
return true;
}
return false;
}


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

}


/// <summary>
/// 刪除目錄
/// </summary>
/// <param name="dir">制定目錄</param>
/// <param name="onlyDir">是否只刪除目錄</param>
/// <returns></returns>
public static bool DeleteDir(string dir, bool onlyDir)
{
if (dir == null || dir.Trim() == "")
{
throw new NullReferenceException("目錄dir=" + dir + "不存在");
}

if (!Directory.Exists(dir))
{
return false;
}

DirectoryInfo dirInfo = new DirectoryInfo(dir);
if (dirInfo.GetFiles().Length == 0 && dirInfo.GetDirectories().Length==0)
{
Directory.Delete(dir);
return true;
}


if (!onlyDir)
{
return false;
}
else
{
DeleteDir(dirInfo);
return true;
}

}


/// <summary>
/// 在指定的目錄中尋找檔案
/// </summary>
/// <param name="dir">目錄</param>
/// <param name="fileName">檔案名稱</param>
/// <returns></returns>
public static bool FindFile(string dir, string fileName)
{
if (dir == null || dir.Trim() == "" || fileName == null || fileName.Trim() == "" || !Directory.Exists(dir))
{
return false;
}

DirectoryInfo dirInfo = new DirectoryInfo(dir);
return FindFile(dirInfo, fileName);

}


public static bool FindFile(DirectoryInfo dir, string fileName)
{
foreach (DirectoryInfo d in dir.GetDirectories())
{
if (File.Exists(d.FullName + "\\" + fileName))
{
return true;
}
FindFile(d,fileName);
}

return false;
}

}
}

C# 檔案操作類

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.