NETCORE - 文件读取

NETCORE - 文件读取

 

using Microsoft.AspNetCore.Http;
using Microsoft.IdentityModel.Tokens;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Ude;

namespace Rail.Medium.FileOperate
{
    public class FileOperation
    {

        public static Encoding GetEncoding(string file)
        {
            using (var fs = File.OpenRead(file))
            {
                return GetEncoding(fs);
            }
        }

        public static Encoding GetEncoding(Stream fs)
        {
            var detector = new CharsetDetector();
            detector.Feed(fs);
            detector.DataEnd();
            var cs = detector.Charset ?? "UTF-8";
            return Encoding.GetEncoding(cs);
        }

        public static async Task<List<string>> ReadToList(IFormFile file)
        {
            System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);

            // 处理文件
            using (var fs = file.OpenReadStream())
            {
                var encoding = GetEncoding(fs);
                using (var reader = new StreamReader(file.OpenReadStream(), encoding))
                //using (var reader = new StreamReader(file.OpenReadStream(), Encoding.GetEncoding("gb18030")))
                {
                    var fileContent = await reader.ReadToEndAsync();

                    List<string> lines = new List<string>(fileContent.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries));

                    lines.RemoveAt(0);

                    return lines;
                }
            }
        }

        public static async Task<string> ReadToText(IFormFile file)
        {
            System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);

            // 处理文件
            using (var reader = new StreamReader(file.OpenReadStream(), Encoding.UTF8, true))
            {
                var fileContent = await reader.ReadToEndAsync();

                return fileContent;
            }
        }

        public static async Task<string> WriteToFileAsync(string str, string filePath)
        {
            //System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);

            if (System.IO.File.Exists(filePath)) File.Delete(filePath);

            await System.IO.File.WriteAllTextAsync(filePath, str, new UTF8Encoding(false));

            return filePath;
        }

        public static string WriteToFile(string str, string filePath)
        {
            //System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);

            if (System.IO.File.Exists(filePath)) File.Delete(filePath);

            System.IO.File.WriteAllText(filePath, str, new UTF8Encoding(false));

            return filePath;
        }


    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

end

posted @ 2025-05-14 11:31  无心々菜  阅读(17)  评论(0)    收藏  举报