/// <summary>
        /// 读文本文件
        /// </summary>
        /// <param name="file"></param>
        /// <returns></returns>
        public static async Task <string> ReadAsync(string file)
        {
            if (!System.IO.File.Exists(file))
            {
                return(string.Empty);
            }
            var fs = new FileStream(file, FileMode.Open);

            using var reader = new StreamReader(fs, TxtEncoder.GetEncoding(fs));
            var content = await reader.ReadToEndAsync();

            return(content);
        }
        public static StreamWriter Writer(string file, bool append)
        {
            FileStream fs;

            if (!append)
            {
                fs = new FileStream(file, FileMode.Create, FileAccess.ReadWrite);
                return(new StreamWriter(fs, Encoding.UTF8));
            }
            fs = new FileStream(file, FileMode.OpenOrCreate, FileAccess.ReadWrite);
            var encoding = TxtEncoder.GetEncoding(fs);

            fs.Seek(0, SeekOrigin.End);
            return(new StreamWriter(fs, encoding));
        }
        public static StreamReader Reader(string file)
        {
            var fs = new FileStream(file, FileMode.Open);

            return(new StreamReader(fs, TxtEncoder.GetEncoding(fs)));
        }