zoukankan      html  css  js  c++  java
  • C# 文件操作类

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

    }
    }
  • 相关阅读:
    x64 平台开发 Mapxtreme 编译错误
    hdu 4305 Lightning
    Ural 1627 Join(生成树计数)
    poj 2104 Kth Number(可持久化线段树)
    ural 1651 Shortest Subchain
    hdu 4351 Digital root
    hdu 3221 Bruteforce Algorithm
    poj 2892 Tunnel Warfare (Splay Tree instead of Segment Tree)
    hdu 4031 Attack(BIT)
    LightOJ 1277 Looking for a Subsequence
  • 原文地址:https://www.cnblogs.com/hlxs/p/2087974.html
Copyright © 2011-2022 走看看