using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading; namespace BZFAStandardLib { /// /// txt文件操作专用类 /// public static class FileOperate { private static Mutex mutexNew = new Mutex(); private static Mutex mutexWrite = new Mutex(); /// /// 新建文件, /// /// 文件路径+文件名(包含扩展名) public static void NewTxtFile(string txtFile) { string path = txtFile.Substring(0, txtFile.LastIndexOf("\\")); if (!Directory.Exists(path)) Directory.CreateDirectory(path); //判断路径是否存在,不存在则创建 if (!File.Exists(txtFile)) //判断文件是否存在,不存在则创建 { using (FileStream fileStream = new FileStream(txtFile, FileMode.Create, FileAccess.Write)) { fileStream.Close(); } } } /// /// 新建并写入txt文件; /// /// 文件路径+文件名(包含扩展名) /// 写入内容 public static void NewTxtFile(string txtFile, string txt) { string str1 = "\r\n====================================================================\r\n"; string str2 = "\r\n===================================================================="; string path = txtFile.Substring(0, txtFile.LastIndexOf("\\")); bool fileExists = File.Exists(txtFile); // 如果文件不存在,则创建文件并写入内容 if (!fileExists) { using (FileStream fileStream = new FileStream(txtFile, FileMode.Create, FileAccess.Write)) using (StreamWriter streamWriter = new StreamWriter(fileStream)) { streamWriter.Write(str1 + txt + str2); // 直接写入内容 } } else { // 如果文件存在,则打开文件并在末尾追加内容 using (FileStream fileStream = new FileStream(txtFile, FileMode.Append, FileAccess.Write)) using (StreamWriter streamWriter = new StreamWriter(fileStream)) { streamWriter.WriteLine(str1 + txt + str2); // 使用 WriteLine 确保有换行符 } } } /// /// 带锁 /// /// public static void NewFile(string file) { try { mutexNew.WaitOne(); string path = file.Substring(0, file.LastIndexOf("\\")); if (!Directory.Exists(path)) Directory.CreateDirectory(path); //判断路径是否存在,不存在则创建 if (!File.Exists(file)) //判断文件是否存在,不存在则创建 { using (FileStream fileStream = new FileStream(file, FileMode.Create, FileAccess.Write)) { fileStream.Close(); } } mutexNew.ReleaseMutex(); } catch (Exception ex) { mutexNew.ReleaseMutex(); } } /// /// 写入txt文件; /// /// 文件路径+文件名(包含扩展名) /// 写入内容 public static bool WriteTxtFile(string txtFile, string txt) { if (!File.Exists(txtFile)) NewTxtFile(txtFile); //判断文件是否存在,不存在则新建; try { using (FileStream fileStream = new FileStream(txtFile, FileMode.Open, FileAccess.Write)) //写入文件 { StreamWriter streamWriter = new StreamWriter(fileStream); //sw.BaseStream的Position或Seek()可移动文件流指针到的任意位置; streamWriter.BaseStream.Seek(0, SeekOrigin.End); //在txt末尾写入; streamWriter.Write(txt); //写入txt文件内容; streamWriter.Flush(); streamWriter.Close(); fileStream.Close(); } return true; } catch { return false; } } /// /// 带锁 /// /// /// public static void WriteFile(string file, string txt) { try { mutexWrite.WaitOne(); if (!File.Exists(file)) NewFile(file); //判断文件是否存在,不存在则新建; using (FileStream fileStream = new FileStream(file, FileMode.Open, FileAccess.Write)) //写入文件 { StreamWriter streamWriter = new StreamWriter(fileStream); //sw.BaseStream的Position或Seek()可移动文件流指针到的任意位置; streamWriter.BaseStream.Seek(0, SeekOrigin.End); //在txt末尾写入; streamWriter.Write(txt); //写入txt文件内容; streamWriter.Flush(); streamWriter.Close(); fileStream.Close(); } mutexWrite.ReleaseMutex(); } catch { mutexWrite.ReleaseMutex(); } } /// /// 读取txt文件内容; /// /// 文件路径+文件名(包含扩展名) /// 返回txt文件内容 public static string ReadTxtFile(string txtFile) { if (!File.Exists(txtFile)) return ""; //判断文件是否存在; string Return = ""; using (FileStream fileStream = new FileStream(txtFile, FileMode.Open, FileAccess.Read)) { StreamReader streamReader = new StreamReader(fileStream, Encoding.UTF8); Return = streamReader.ReadToEnd().ToString(); streamReader.Close(); fileStream.Close(); } return Return; } /// /// 读取最后一行内容; /// /// 文件路径+文件名(包含扩展名) /// public static string ReadLastLine(string txtFile) { if (!File.Exists(txtFile)) return ""; //判断文件是否存在; string[] allLines = File.ReadAllLines(txtFile); if (allLines.Length > 0) return allLines[allLines.Length - 1]; else return ""; } /// /// 覆盖最后一行内容; /// /// 文件路径+文件名(包含扩展名) /// public static void CoverLastLine(string txtFile, string txt) { if (File.Exists(txtFile)) //判断文件是否存在; { string[] allLines = File.ReadAllLines(txtFile); if (allLines.Length > 0) { allLines[allLines.Length - 1] = txt; File.WriteAllLines(txtFile, allLines); } } } /// /// 移除最后一行内容; /// /// 文件路径+文件名(包含扩展名) public static void RemoveLastLine(string txtFile) { if (File.Exists(txtFile)) //判断文件是否存在 { string[] allLines = File.ReadAllLines(txtFile); if (allLines.Length > 0) { Array.Resize(ref allLines, allLines.Length - 1); File.WriteAllLines(txtFile, allLines); } } } } }