编程语言
首页 > 编程语言> > 【C#】 TxtHelper

【C#】 TxtHelper

作者:互联网

 public static class TxtHelper
    {
        /// <summary>
        /// 在txt文件中加一条数据
        /// </summary>
        /// <param name="folderName">文件夹名称</param>
        /// <param name="fileName">文件名称</param>
        /// <param name="line">信息</param>
        public static void WriteLine(string folderName, string fileName, string line)
        {
            string LogPath = folderName;
            if (!Directory.Exists(LogPath))
            {
                Directory.CreateDirectory(LogPath);
            }
            string filePath = LogPath + fileName;
            using (FileStream stream = File.Open(filePath, FileMode.Append, FileAccess.Write, FileShare.Write))
            {
                using (StreamWriter sw = new StreamWriter(stream))
                {
                    sw.WriteLine(line);
                }
            }
        }
        /// <summary>
        /// 在txt文件中加多条数据
        /// </summary>
        /// <param name="folderName">文件夹名称</param>
        /// <param name="fileName">文件名称</param>
        /// <param name="lines">多条信息</param>
        public static void WriteLines(string folderName, string fileName, List<string> lines)
        {
            string LogPath = folderName;
            if (!Directory.Exists(LogPath))
            {
                Directory.CreateDirectory(LogPath);
            }
            string filePath = LogPath + fileName;
            using (FileStream stream = File.Open(filePath, FileMode.Append, FileAccess.Write, FileShare.Write))
            {
                using (StreamWriter sw = new StreamWriter(stream))
                {
                    lines.ForEach(e =>
                    {
                        sw.WriteLine(e);

                    });
                }
            }
        }
        /// <summary>
        /// 在txt文件中覆盖一条数据
        /// </summary>
        /// <param name="folderName">文件夹名称</param>
        /// <param name="fileName">文件名称</param>
        /// <param name="line">信息</param>
        public static void ReWriteLine(string folderName, string fileName, string line)
        {
            string LogPath = folderName;
            if (!Directory.Exists(LogPath))
            {
                Directory.CreateDirectory(LogPath);
            }
            string filePath = LogPath + fileName;
            using (FileStream stream = File.Open(filePath, FileMode.Create, FileAccess.Write, FileShare.Write))
            {
                using (StreamWriter sw = new StreamWriter(stream))
                {
                    sw.WriteLine(line);
                }
            }
        }
        /// <summary>
        /// 在txt文件中覆盖多条数据
        /// </summary>
        /// <param name="folderName">文件夹名称</param>
        /// <param name="fileName">文件名称</param>
        /// <param name="line">信息</param>
        public static void ReWriteLines(string folderName, string fileName, List<string> lines)
        {
            string LogPath = folderName;
            if (!Directory.Exists(LogPath))
            {
                Directory.CreateDirectory(LogPath);
            }
            string filePath = LogPath + fileName;
            using (FileStream stream = File.Open(filePath, FileMode.Create, FileAccess.Write, FileShare.Write))
            {
                using (StreamWriter sw = new StreamWriter(stream))
                {
                    lines.ForEach(e =>
                    {
                        sw.WriteLine(e);

                    });
                }
            }
        }
        /// <summary>
        /// 在txt文件中取出所有数据
        /// </summary>
        /// <param name="folderName">文件夹名称</param>
        /// <param name="fileName">文件名称</param>
        public static List<string> GetAllLines(string folderName, string fileName)
        {
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
            string LogPath = folderName;
            if (!Directory.Exists(LogPath))
            {
                Directory.CreateDirectory(LogPath);
            }
            string filePath = LogPath + fileName;

            FileStream stream = null;
            StreamReader reader = null;
            List<string> baseList = new List<string>();
            try
            {
                stream = new FileStream(filePath, FileMode.Open);
                reader = new StreamReader(stream, Encoding.GetEncoding("utf-8"));

                bool isNotNullLine = true;

                while (isNotNullLine)
                {
                    string line = reader.ReadLine();
                    if (string.IsNullOrEmpty(line))
                    {
                        isNotNullLine = false;
                    }
                    else
                    {
                        baseList.Add(line);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                if (stream != null)
                {
                    stream.Close();
                    stream.Dispose();
                }
                if (reader != null)
                {
                    reader.Close();
                    reader.Dispose();
                }
            }
            if (baseList.Count == 0)
            {
                return null;
            }
            return baseList;

        }
        /// <summary>
        /// 在txt文件中取出输入行之后的所有数据
        /// </summary>
        /// <param name="folderName">文件夹名称</param>
        /// <param name="fileName">文件名称</param>
        public static List<string> GetNextAllLines(string folderName, string fileName, string inputline)
        {
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
            string LogPath = folderName;
            if (!Directory.Exists(LogPath))
            {
                Directory.CreateDirectory(LogPath);
            }
            string filePath = LogPath + fileName;

            FileStream stream = null;
            StreamReader reader = null;
            List<string> baseList = new List<string>();
            try
            {
                stream = new FileStream(filePath, FileMode.Open);
                reader = new StreamReader(stream, Encoding.GetEncoding("utf-8"));

                bool isNotNullLine = true;

                while (isNotNullLine)
                {
                    string line = reader.ReadLine();
                    if (string.IsNullOrEmpty(line))
                    {
                        isNotNullLine = false;
                    }
                    else
                    {
                        if (line == inputline)
                        {
                            break;
                        }

                    }
                }

                while (isNotNullLine)
                {
                    string line = reader.ReadLine();
                    if (string.IsNullOrEmpty(line))
                    {
                        isNotNullLine = false;
                    }
                    else
                    {

                        baseList.Add(line);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                if (stream != null)
                {
                    stream.Close();
                    stream.Dispose();
                }
                if (reader != null)
                {
                    reader.Close();
                    reader.Dispose();
                }
            }
            return baseList;

        }
        /// <summary>
        /// 获取文件夹下所有后缀是fileType文件
        /// </summary>
        /// <param name="folderName">文件夹</param>
        /// <param name="fileType">文件类型</param>
        /// <returns></returns>
        public static List<string> GetAllFiles(string folderName, string fileType)
        {
            var files = Directory.GetFiles(folderName, $"*.{fileType}");
            List<string> historyList = new List<string>();
            foreach (var file in files)
                historyList.Add(Path.GetFileName(file));
            return historyList;
        }

    }

标签:string,stream,C#,LogPath,folderName,TxtHelper,reader,Directory
来源: https://www.cnblogs.com/xuxml/p/12192037.html