当前位置:首页 > Windows程序 > 正文

C# 文件操作类

2021-03-29 Windows程序

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

//文件功能描述:文件操作类

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

namespace Utils

{

public class IOHelper

{

/// <summary>

/// 判断文件是否存在

/// </summary>

/// <param></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></param>

/// <returns></returns>

public static bool CreateDir(string dirName)

{

if (!Directory.Exists(dirName))

{

Directory.CreateDirectory(dirName);

}

return true;

}

/// <summary>

/// 创建文件

/// </summary>

/// <param></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></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>文件名</param>

/// <param>文件内容</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>文件名</param>

/// <param>内容</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>被复制的目录</param>

/// <param>复制到的目录</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>被复制的目录</param>

/// <param>复制到的目录</param>

/// <param>被复制的根目录</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>文件的完整路径</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>制定目录</param>

/// <param>是否只删除目录</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>目录</param>

/// <param>文件名</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);

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/69567.html