C#中用IO流读文件和写文件

本文介绍了一个使用C#进行文件读写的示例程序,包括从多种格式的文件中读取数据,并将数据写回到文件的过程。示例展示了如何使用StreamReader和StreamWriter类来处理文本文件,特别关注了编码问题,确保正确读写GBK编码的文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

class Program
{
       public static void Main(string[] args)
        {
            string filePath = "c:\\test.txt";
            List<string[]> list = ReadInfoFromFile(filePath);          //读文件, 包括txt,xml,kml,doc等文件
            WriteInfoTofile(filePath, list);                                       //写文件
        }
   
        /// <summary>
        /// 读文件
        /// </summary>
        /// <param name="filePath"></param>
        /// <returns></returns>
        private static List<string[]> ReadInfoFromFile(string filePath)
        {
            if (File.Exists(filePath))
            {
                List<string[]> list = new List<string[]>();
                // 打开文件时 一定要注意编码 也许你的那个文件并不是GBK编码的
                using (StreamReader sr = new StreamReader(filePath, Encoding.GetEncoding("GBK")))
                {
                    while (!sr.EndOfStream) //读到结尾退出
                    {
                        string temp = sr.ReadLine();
                        //将每一行拆分,分隔符就是char 数组中的字符
                        string[] strArray = temp.Split(new char[] { '\t', ' ', ',' }, StringSplitOptions.RemoveEmptyEntries);
                       //将拆分好的string[] 存入list
                        list.Add(strArray);
                    }
                }
                return list;
            }
            return null;
        }

        /// <summary>
        /// 写文件
        /// </summary>
        /// <param name="filePath"></param>
        /// <param name="list"></param>
        private static void WriteInfoTofile(string filePath, List<string[]> list)
        {
            // 打开文件时 一定要注意编码 也许你的那个文件并不是GBK编码的
            using (StreamWriter sw = new StreamWriter(filePath, false, Encoding.GetEncoding("GBK"))) 
            {
                //一个string[] 是一行 ,每行都以tab键分隔
                foreach (string[] strArray in list)
                {
                    string line = string.Empty;
                    foreach (string temp in strArray)
                    {
                        if (!string.IsNullOrEmpty(temp))
                        {
                            line += temp;
                            line += "\t";
                        }
                    }
                    sw.WriteLine(line);
                }
            }
        }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值