當路徑D:\web\不存在時,下邊兩個語句都會拋錯:
File.WriteAllText(@"D:\web\index.htm", "111cn.net");
File.ReadAllText(@"D:\web\index.htm");
平時調用WriteAllText前都得先調用Directory.Exists和Directory.CreateDirectory,換句話說,建立檔案和建立所屬檔案夾應為一個整體,而讀取檔案時,建立所屬檔案夾顯然不合適,基於這一原則,重新封裝了C# File類:
複製內容到剪貼簿 程式碼
public static class ICSFile
{
private static readonly Encoding DEFAULTENCODE = Encoding.UTF8;
/// <summary>
/// 建立父資料夾
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
private static void CreateDirectory(string path)
{
string dir = Path.GetDirectoryName(path);
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
}
/// <summary>
/// 追加文本
/// </summary>
/// <param name="path"></param>
/// <param name="contents"></param>
public static void AppendAllText(string path, string contents)
{
AppendAllText(path, contents, DEFAULTENCODE);
}
/// <summary>
/// 追加文本
/// </summary>
/// <param name="path"></param>
/// <param name="contents"></param>
/// <param name="encoding"></param>
public static void AppendAllText(string path, string contents, Encoding encoding)
{
CreateDirectory(path);
File.AppendAllText(path, contents, encoding);
}
/// <summary>
/// 複製檔案
/// </summary>
/// <param name="sourceFileName"></param>
/// <param name="destFileName"></param>
public static void Copy(string sourceFileName, string destFileName)
{
Copy(sourceFileName, destFileName, false);
}
/// <summary>
/// 複製檔案
/// </summary>
/// <param name="sourceFileName"></param>
/// <param name="destFileName"></param>
/// <param name="overwrite"></param>
public static void Copy(string sourceFileName, string destFileName, bool overwrite)
{
CreateDirectory(destFileName);
File.Copy(sourceFileName, destFileName, overwrite);
}
/// <summary>
/// 刪除檔案
/// </summary>
/// <param name="path"></param>
public static void Delete(string path)
{
File.Delete(path);
}
/// <summary>
/// 判斷檔案是否存在
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public static bool Exists(string path)
{
return File.Exists(path);
}
/// <summary>
/// 移動檔案
/// </summary>
/// <param name="sourceFileName"></param>
/// <param name="destFileName"></param>
public static void Move(string sourceFileName, string destFileName)
{
Move(sourceFileName, destFileName, false);
}
/// <summary>
/// 移動檔案
/// </summary>
/// <param name="sourceFileName"></param>
/// <param name="destFileName"></param>
/// <param name="overwrite"></param>
public static void Move(string sourceFileName, string destFileName, bool overwrite)
{
if (overwrite && File.Exists(destFileName))
{
File.Delete(destFileName);
}
CreateDirectory(destFileName);
File.Move(sourceFileName, destFileName);
}
/// <summary>
/// 讀取檔案
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public static string ReadAllText(string path)
{
return ReadAllText(path, DEFAULTENCODE);
}
/// <summary>
/// 讀取檔案
/// </summary>
/// <param name="path"></param>
/// <param name="encoding"></param>
/// <returns></returns>
public static string ReadAllText(string path, Encoding encoding)
{
return File.ReadAllText(path, encoding);
}
/// <summary>
/// 建立一個新檔案寫入文本
/// </summary>
/// <param name="path"></param>
/// <param name="contents"></param>
public static void WriteAllText(string path, string contents)
{
WriteAllText(path, contents, DEFAULTENCODE);
}
/// <summary>
/// 建立一個新檔案寫入文本
/// </summary>
/// <param name="path"></param>
/// <param name="contents"></param>
/// <param name="encoding"></param>
public static void WriteAllText(string path, string contents, Encoding encoding)
{
CreateDirectory(path);
File.WriteAllText(path, contents, encoding);
}
}