zoukankan      html  css  js  c++  java
  • C#常用的IO操作方法

    public class IoHelper
        {
            /// <summary>
            /// 判断文件是否存在
            /// </summary>
            /// <param name="fileName">文件路径</param>
            /// <returns>是否存在</returns>
            public static bool Exists(string fileName)
            {
                if (fileName == null || fileName.Trim() == "")
                {
                    return false;
                }
                return File.Exists(fileName);
            }
    
    
            /// <summary>
            /// 创建文件夹
            /// </summary>
            /// <param name="dirName">文件夹名</param>
            /// <returns></returns>
            public static bool CreateDir(string dirName)
            {
                try
                {
                    if (dirName == null)
                        throw new Exception("dirName");
                    if (!Directory.Exists(dirName))
                    {
                        Directory.CreateDirectory(dirName);
                    }
                    return true;
                }
                catch (Exception er)
                {
                    throw new Exception(er.Message);
                }
            }
    
    
            /// <summary>
            /// 创建文件
            /// </summary>
            /// <param name="fileName">文件名</param>
            /// <returns>创建失败返回false</returns>
            public static bool CreateFile(string fileName)
            {
                try
                {
                    if (File.Exists(fileName)) return false;
                    var fs = File.Create(fileName);
                    fs.Close();
                    fs.Dispose();
                }
                catch (IOException ioe)
                {
                    throw new IOException(ioe.Message);
                }
    
                return true;
            }
    
    
            /// <summary>
            /// 读文件内容,转化为字符类型
            /// </summary>
            /// <param name="fileName">文件路径</param>
            /// <returns></returns>
            public static string Read(string fileName)
            {
                if (!Exists(fileName))
                {
                    return null;
                }
                //将文件信息读入流中
                using (var fs = new FileStream(fileName, FileMode.Open))
                {
                    return new StreamReader(fs).ReadToEnd();
                }
            }
    
    
            /// <summary>
            /// 文件转化为Char[]数组
            /// </summary>
            /// <param name="fileName"></param>
            /// <returns></returns>
            public static char[] FileRead(string fileName)
            {
                if (!Exists(fileName))
                {
                    return null;
                }
                var byData = new byte[1024];
                var charData = new char[1024];
                try
                {
                    var fileStream = new FileStream(fileName, FileMode.Open);
                    fileStream.Seek(135, SeekOrigin.Begin);
                    fileStream.Read(byData, 0, 1024);
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
                var decoder = Encoding.UTF8.GetDecoder();
                decoder.GetChars(byData, 0, byData.Length, charData, 0);
                return charData;
            }
    
    
    
            /// <summary>
            /// 文件转化为byte[]
            /// </summary>
            /// <param name="fileName">文件路径</param>
            /// <returns></returns>
            public static byte[] ReadFile(string fileName)
            {
                FileStream pFileStream = null;
                try
                {
                    pFileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read);
                    var r = new BinaryReader(pFileStream);
                    //将文件指针设置到文件开
                    r.BaseStream.Seek(0, SeekOrigin.Begin);
                    var pReadByte = r.ReadBytes((int)r.BaseStream.Length);
                    return pReadByte;
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
    
                }
                finally
                {
                    if (pFileStream != null) pFileStream.Close();
                }
            }
    
    
            /// <summary>
            /// 将byte写入文件
            /// </summary>
            /// <param name="pReadByte">字节流</param>
            /// <param name="fileName">文件路径</param>
            /// <returns></returns>
            public static bool WriteFile(byte[] pReadByte, string fileName)
            {
                FileStream pFileStream = null;
                try
                {
                    pFileStream = new FileStream(fileName, FileMode.OpenOrCreate);
                    pFileStream.Write(pReadByte, 0, pReadByte.Length);
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
                finally
                {
                    if (pFileStream != null) pFileStream.Close();
                }
                return true;
    
            }
    
            public static string ReadLine(string fileName)
            {
                if (!Exists(fileName))
                {
                    return null;
                }
                using (var 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;
                }
                try
                {
                    //将文件信息读入流中
                    //初始化System.IO.FileStream类的新实例与指定路径和创建模式
                    using (var fs = new FileStream(fileName, FileMode.OpenOrCreate))
                    {
                        //锁住流
                        lock (fs)
                        {
                            if (!fs.CanWrite)
                            {
                                throw new System.Security.SecurityException("文件fileName=" + fileName + "是只读文件不能写入!");
                            }
    
                            var buffer = Encoding.Default.GetBytes(content);
                            fs.Write(buffer, 0, buffer.Length);
                            return true;
                        }
                    }
                }
                catch (IOException ioe)
                {
                    throw new Exception(ioe.Message);
                }
    
            }
    
    
            /// <summary>
            /// 写入一行
            /// </summary>
            /// <param name="fileName">文件名</param>
            /// <param name="content">内容</param>
            /// <returns></returns>
            public static bool WriteLine(string fileName, string content)
            {
                if (string.IsNullOrEmpty(fileName))
                    throw new ArgumentNullException(fileName);
                if (string.IsNullOrEmpty(content))
                    throw new ArgumentNullException(content);
                using (var fs = new FileStream(fileName, FileMode.OpenOrCreate | FileMode.Append))
                {
                    //锁住流
                    lock (fs)
                    {
                        if (!fs.CanWrite)
                        {
                            throw new System.Security.SecurityException("文件fileName=" + fileName + "是只读文件不能写入!");
                        }
    
                        var sw = new StreamWriter(fs);
                        sw.WriteLine(content);
                        sw.Dispose();
                        sw.Close();
                        return true;
                    }
                }
            }
    
    
            /// <summary>
            /// 复制目录
            /// </summary>
            /// <param name="fromDir">被复制的目录</param>
            /// <param name="toDir">复制到的目录</param>
            /// <returns></returns>
            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 + "不存在");
                }
    
                var 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)
            {
                foreach (var f in fromDir.GetFiles())
                {
                    var filePath = toDir + f.FullName.Substring(rootDir.Length);
                    var newDir = filePath.Substring(0, filePath.LastIndexOf("\", StringComparison.Ordinal));
                    CreateDir(newDir);
                    File.Copy(f.FullName, filePath, true);
                }
    
                foreach (var dir in fromDir.GetDirectories())
                {
                    CopyDir(dir, toDir, rootDir);
                }
    
                return true;
            }
    
    
            /// <summary>
            /// 删除文件
            /// </summary>
            /// <param name="fileName">文件的完整路径</param>
            /// <returns></returns>
            public static bool DeleteFile(string fileName)
            {
                try
                {
                    if (!Exists(fileName)) return false;
                    File.Delete(fileName);
                }
                catch (IOException ioe)
                {
                    throw new ArgumentNullException(ioe.Message);
                }
    
                return true;
            }
    
    
            public static void DeleteDir(DirectoryInfo dir)
            {
                if (dir == null)
                {
                    throw new NullReferenceException("目录不存在");
                }
    
                foreach (var d in dir.GetDirectories())
                {
                    DeleteDir(d);
                }
    
                foreach (var 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;
                }
    
                var dirInfo = new DirectoryInfo(dir);
                if (dirInfo.GetFiles().Length == 0 && dirInfo.GetDirectories().Length == 0)
                {
                    Directory.Delete(dir);
                    return true;
                }
    
    
                if (!onlyDir)
                {
                    return false;
                }
                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;
                }
    
                //传入文件路径,获取当前文件对象
                var dirInfo = new DirectoryInfo(dir);
                return FindFile(dirInfo, fileName);
    
            }
    
    
            /// <summary>
            /// 返回文件是否存在
            /// </summary>
            /// <param name="dir"></param>
            /// <param name="fileName"></param>
            /// <returns></returns>
            public static bool FindFile(DirectoryInfo dir, string fileName)
            {
                foreach (var d in dir.GetDirectories())
                {
                    if (File.Exists(d.FullName + "\" + fileName))
                    {
                        return true;
                    }
                    FindFile(d, fileName);
                }
    
                return false;
            }
    
    
            /// <summary>
            /// 获取指定文件夹中的所有文件夹名称
            /// </summary>
            /// <param name="folderPath">路径</param>
            /// <returns></returns>
            public static List<string> FolderName(string folderPath)
            {
                var listFolderName = new List<string>();
                try
                {
                    var info = new DirectoryInfo(folderPath);
    
                    listFolderName.AddRange(info.GetDirectories().Select(nextFolder => nextFolder.Name));
                }
                catch (Exception er)
                {
                    throw new Exception(er.Message);
                }
    
                return listFolderName;
    
            }
    
    
            /// <summary>
            /// 获取指定文件夹中的文件名称
            /// </summary>
            /// <param name="folderPath">路径</param>
            /// <returns></returns>
            public static List<string> FileName(string folderPath)
            {
                var listFileName = new List<string>();
                try
                {
                    var info = new DirectoryInfo(folderPath);
    
                    listFileName.AddRange(info.GetFiles().Select(nextFile => nextFile.Name));
                }
                catch (Exception er)
                {
                    throw new Exception(er.Message);
                }
    
                return listFileName;
            }
        }
  • 相关阅读:
    python笔记第二节
    python笔记第一节
    hadoop 家族生态圈 小结
    JDBC:impala 连接DEMO
    关于excel表格的导入导出的工具类。(java 反射 excel)
    简单写了一个类似全文检索的帮助类。
    关于框架SSM中文乱码问题总结
    关于SpringMVC, bean对象中含有Date型变,改如何接收数据的问题。
    Nlog
    java手动编译
  • 原文地址:https://www.cnblogs.com/pengze0902/p/5942286.html
Copyright © 2011-2022 走看看