C#常用的IO操作方法
C#常用的IO操作方法
彭泽0902 发表于11个月前
C#常用的IO操作方法
  • 发表于 11个月前
  • 阅读 0
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

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

 

共有 人打赏支持
粉丝 0
博文 44
码字总数 57771
×
彭泽0902
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: