当前位置: 代码网 > it编程>编程语言>Asp.net > C# 读写TXT文件操作

C# 读写TXT文件操作

2024年08月03日 Asp.net 我要评论
C# 读写TXT文件操作

一 、读取文本文件有多种方法

1 使用 streamreader 类打开、读取和关闭文本文件。使用 readline 方法逐行读取文本文件,readtoend方法将文本文件读取到末尾。

        /// <summary>
        /// 逐行将文本文件读取到末尾
        /// </summary>
        /// <param name="pathaname"></param>
        /// <returns></returns>
        public static string readtxt_streamreader(string pathaname)
        {
            streamreader objectname = new streamreader(pathaname);
            return objectname.readtoend(); 
        }

2、streamreader继承textreader,操作和streamreader一致,使用 readline 方法逐行读取文本文件,readtoend方法将文本文件读取到末尾。

        /// <summary>
        /// 逐行读取文件,返回列表
        /// </summary>
        /// <param name="pathaname"></param>
        /// <returns></returns>
        public static list<string> readtxt_textreader(string pathaname)
        {
            list<string> txtcontent = new list<string>();
            if (!file.exists(pathaname))
            {
                using (textreader reader = new streamreader(pathaname))
                {
                    string line;
                    while ((line = reader.readline()) != null) // 逐行读取文件内容
                    {
                        txtcontent.add(line); // 输出每行内容到控制台
                    }
                }
            }
            return txtcontent;
        }

3、使用 file 类打开、读取和关闭文本文件。
file.readalllines(string path, encoding encoding) 方法:打开一个文件,使用指定的编码读取文件的所有行,然后关闭该文件。返回包含文件所有行的字符串数组。

        /// <summary>
        /// 逐行读取文件,返回数组
        /// </summary>
        /// <param name="pathaname"></param>
        /// <returns></returns>
        public static string[] readtxt_readalllines(string pathaname)
        {
            string[] txtcontent = null;
            txtcontent = system.io.file.readalllines(pathaname, encoding.utf8);
            return txtcontent;
        }

file.readalltext(string path, encoding encoding)方法:打开一个文件,使用指定的编码读取文件的所有行,然后关闭该文件。逐行读取文本文件。返回包含文件所有行的字符串。

        /// <summary>
        /// 读取,返回字符串
        /// </summary>
        /// <param name="pathaname"></param>
        /// <returns></returns>
        public static string readtxt_readalltext(string pathaname)
        {
            string txtcontent = null;
            txtcontent = system.io.file.readalltext(pathaname, encoding.utf8);
            return txtcontent;
        }

readlines(string path, encoding encoding)方法:读取具有指定编码的文件的文本行。返回该文件的所有行或查询所示的行。

        /// <summary>
        /// 读取,返回枚举类型
        /// 高效地逐行读取大型文本文件的最佳方法
        /// </summary>
        /// <param name="pathaname"></param>
        /// <returns></returns>
        public static string readtxt_readlines(string pathaname)
        {
            ienumerable<string> line = system.io.file.readlines(pathaname, encoding.utf8);
            return string.join(environment.newline, line);
        }

二、创建、写入文本文件

1、filestream 创建文件,可设置文件属性,streamwriter 打开、写入、关闭文件。
a)方式1:

        /// <summary>
        /// 数据流形式写入文件
        /// </summary>
        /// <param name="path"></param>
        /// <param name="txtcontent"></param>
        /// <returns></returns>
        public static void writetxt_streamwriter(string pathaname, string txtcontent)
        {
            filestream fs;
            //判断是否已经有了这个文件
            if (!system.io.file.exists(pathaname))
            {
                //没有则创建这个文件,创建写入文件,设置文件属性为隐藏
                fs = new filestream(pathaname, filemode.create, fileaccess.write);
            }
            else
            {
                fs = new filestream(pathaname, filemode.open, fileaccess.write);
            }
            file.setattributes(@pathaname, fileattributes.hidden);
            streamwriter sw = new streamwriter(fs);
            sw.writeline(txtcontent.trim());//写入值
            sw.flush();
            sw.dispose();
            sw.close();
            fs.close();
        }

b)方式2

        /// <summary>
        /// 数据流形式写入文件
        /// </summary>
        /// <param name="pathaname"></param>
        /// <param name="logstring"></param>
        public static void write(string pathaname, string logstring)
        {
            if (!file.exists(pathaname))
            {
                //创建.txt文件
                filestream stream = file.create(pathaname);
                stream.close();
                stream.dispose();
            }
            // true:若文件存在,则将数据追加到该文件中若要覆盖该文件
            using (streamwriter writer = new streamwriter(pathaname, true))
            {
                //写入文件
                writer.writeline(logstring);
                writer.close();
            }
        }

2、streamwriter 继承 textwriter ,streamwriter 创建、打开、writeline 写入文件

        /// <summary>
        /// 创建、写入文本文档
        /// </summary>
        /// <param name="pathaname"></param>
        /// <param name="logstring"></param>
        public static void writetxt_textwriter(string pathaname, string logstring)
        {
            if (!file.exists(pathaname))
            {
                using (textwriter reader = new streamwriter(pathaname))
                {
                    reader.writeline(logstring.trim());    
                }
            }
        }

3、使用 file 类创建、写入和关闭文本文件
writealltext(string path, string contents) 方法:创建一个新文件,在其中写入指定的字符串,然后关闭文件。如果目标文件已存在,则覆盖该文件。

        /// <summary>
        /// 在最开始位置追加,追加到开头
        /// </summary>
        /// <param name="pathaname"></param>
        /// <param name="logstring"></param>
        public static void addtextfirst(string pathaname, string logstring)
        {
            string s = file.readalltext(pathaname);
            s = s.insert(0, logstring.trim() + "\r\n");
            file.writealltext(pathaname, s);
        }

writealllines(string path, string[] contents) :创建一个新文件,在其中写入指定的字符串数组,然后关闭该文件。

        /// <summary>
        /// file.writealllines 方法用于将字符串数组的内容按行写入文本文件。
        /// 每个数组元素都被写入文件的一行,且方法会自动在每行的末尾添加换行符。
        /// </summary>
        /// <param name="logstring"></param>
        /// <param name="pathaname"></param>
        public static void writetxt(string pathaname,string []logstring)
        {
            file.writealllines(pathaname, logstring);//写入文件
        }

4、在最开始位置追加,追加到开头

        /// <summary>
        /// 在最开始位置追加,追加到开头
        /// </summary>
        /// <param name="pathaname"></param>
        /// <param name="logstring"></param>
        public static void addtextfirst(string pathaname, string logstring)
        {
            string s = file.readalltext(pathaname);
            s = s.insert(0, logstring.trim() + "\r\n");
            file.writealltext(pathaname, s);
        }

5、在最后位置追加

        /// <summary>
        /// 在最后位置追加
        /// </summary>
        /// <param name="pathaname"></param>
        /// <param name="logstring"></param>
        public static void addtextend(string pathaname, string logstring)
        {
            streamwriter sw = file.appendtext(pathaname);
            sw.writeline(logstring.trim());
            sw.close();
        }

三、使用实例

        openfiledialog openfiledialog1;
        savefiledialog savefileopen;
        string dir = null;
        public form1()
        {
            initializecomponent();
            dir = environment.getfolderpath(environment.specialfolder.desktopdirectory);
            openfiledialog1 = new openfiledialog();
            openfiledialog1.title = "导入";
            openfiledialog1.filter = "txt文件|*.txt";
            openfiledialog1.multiselect = false;
            openfiledialog1.restoredirectory = true;
            openfiledialog1.initialdirectory = dir;

            savefileopen = new savefiledialog();
            savefileopen.title = "保存文件";
            savefileopen.filter = "txt文件(*.txt)|*.txt";
            savefileopen.restoredirectory = true;
            savefileopen.initialdirectory = dir;
        }
        private void richtextbox1_textchanged(object sender, eventargs e)
        {
            richtextbox1.scrolltocaret();
        }
        /// <summary>
        /// 读入txt文件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_click(object sender, eventargs e)
        {
            string info = null;
            string txtcontent = null;
            if (openfiledialog1.showdialog() == dialogresult.ok)
            {
                info = openfiledialog1.filename;
            }
            if (!string.isnullorempty(info))
            {
                txtcontent = operatetxt.readtxt_streamreader(info);
                richtextbox1.appendtext(txtcontent);
            }
        }
        /// <summary>
        /// 写入txt文件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_click(object sender, eventargs e)
        {
            string dir = environment.getfolderpath(environment.specialfolder.desktopdirectory);
            string now_date = datetime.now.tostring("mmddhhmmss") + ".txt";
            string newpath = system.io.path.combine(dir, now_date);

            savefileopen.filename = newpath; //设置默认另存为的名字
            if (savefileopen.showdialog() == dialogresult.ok)
            {
                newpath = savefileopen.filename;
            }
            operatetxt.writetxt(newpath, richtextbox1.text);
        }

在这里插入图片描述
静态操作使用类

using system;
using system.collections.generic;
using system.io;
using system.linq;
using system.text;
using system.threading.tasks;

namespace fileoperationsdemo
{
    public static class operatetxt
    {
        #region 写入文件
        /// <summary>
        /// 数据流形式写入文件
        /// </summary>
        /// <param name="path"></param>
        /// <param name="txtcontent"></param>
        /// <returns></returns>
        public static void writetxt_streamwriter(string pathaname, string txtcontent)
        {
            filestream fs;
            //判断是否已经有了这个文件
            if (!system.io.file.exists(pathaname))
            {
                //没有则创建这个文件,创建写入文件,设置文件属性为隐藏
                fs = new filestream(pathaname, filemode.create, fileaccess.write);
            }
            else
            {
                fs = new filestream(pathaname, filemode.open, fileaccess.write);
            }
            file.setattributes(@pathaname, fileattributes.hidden);
            streamwriter sw = new streamwriter(fs);
            sw.writeline(txtcontent.trim());//写入值
            sw.flush();
            sw.dispose();
            sw.close();
            fs.close();
        }
        /// <summary>
        /// 数据流形式写入文件
        /// </summary>
        /// <param name="pathaname"></param>
        /// <param name="logstring"></param>
        public static void write(string pathaname, string logstring)
        {
            if (!file.exists(pathaname))
            {
                //创建.txt文件
                filestream stream = file.create(pathaname);
                stream.close();
                stream.dispose();
            }
            // true:若文件存在,则将数据追加到该文件中若要覆盖该文件
            using (streamwriter writer = new streamwriter(pathaname, true))
            {
                //写入文件
                writer.writeline(logstring);
                writer.close();
            }
        }
        /// <summary>
        /// 创建、写入文本文档
        /// </summary>
        /// <param name="pathaname"></param>
        /// <param name="logstring"></param>
        public static void writetxt_textwriter(string pathaname, string logstring)
        {
            if (!file.exists(pathaname))
            {
                using (textwriter reader = new streamwriter(pathaname))
                {
                    reader.writeline(logstring.trim());    
                }
            }
        }
        /// <summary> 
        /// file.writealltext 方法用于将单个字符串写入文本文件。
        /// 整个字符串将写入文件,不会自动添加换行符。
        /// 如果需要在字符串中包含换行,需要手动添加换行符。
        /// </summary>
        /// <param name="logstring"></param>
        /// <param name="pathaname"></param>
        public static void writetxt(string pathaname, string logstring)
        {
            file.writealltext(pathaname, logstring);//写入文件
        }
        /// <summary>
        /// file.writealllines 方法用于将字符串数组的内容按行写入文本文件。
        /// 每个数组元素都被写入文件的一行,且方法会自动在每行的末尾添加换行符。
        /// </summary>
        /// <param name="logstring"></param>
        /// <param name="pathaname"></param>
        public static void writetxt(string pathaname,string []logstring)
        {
            file.writealllines(pathaname, logstring);//写入文件
        }
        /// <summary>
        /// 在最开始位置追加,追加到开头
        /// </summary>
        /// <param name="pathaname"></param>
        /// <param name="logstring"></param>
        public static void addtextfirst(string pathaname, string logstring)
        {
            string s = file.readalltext(pathaname);
            s = s.insert(0, logstring.trim() + "\r\n");
            file.writealltext(pathaname, s);
        }
        /// <summary>
        /// 在最后位置追加
        /// </summary>
        /// <param name="pathaname"></param>
        /// <param name="logstring"></param>
        public static void addtextend(string pathaname, string logstring)
        {
            streamwriter sw = file.appendtext(pathaname);
            sw.writeline(logstring.trim());
            sw.close();
        }
        #endregion

        #region 读取文件
        /// <summary>
        /// 将文本文件读取到末尾
        /// </summary>
        /// <param name="pathaname"></param>
        /// <returns></returns>
        public static string readtxt_streamreader(string pathaname)
        {
            streamreader objectname = new streamreader(pathaname); 
            return objectname.readtoend();
        }
        /// <summary>
        /// 逐行读取文件,返回列表
        /// </summary>
        /// <param name="pathaname"></param>
        /// <returns></returns>
        public static list<string> readtxt_textreader(string pathaname)
        {
            list<string> txtcontent = new list<string>();
            if (!file.exists(pathaname))
            {
                using (textreader reader = new streamreader(pathaname))
                {
                    string line;
                    while ((line = reader.readline()) != null) // 逐行读取文件内容
                    {
                        txtcontent.add(line); // 输出每行内容到控制台
                    }
                }
            }
            return txtcontent;
        }
        /// <summary>
        /// 逐行读取文件,返回数组
        /// </summary>
        /// <param name="pathaname"></param>
        /// <returns></returns>
        public static string[] readtxt_readalllines(string pathaname)
        {
            string[] txtcontent = null;
            txtcontent = system.io.file.readalllines(pathaname, encoding.utf8);
            return txtcontent;
        }
        /// <summary>
        /// 读取,返回字符串
        /// </summary>
        /// <param name="pathaname"></param>
        /// <returns></returns>
        public static string readtxt_readalltext(string pathaname)
        {
            string txtcontent = null;
            txtcontent = system.io.file.readalltext(pathaname, encoding.utf8);
            return txtcontent;
        }
        /// <summary>
        /// 读取,返回枚举类型
        /// 高效地逐行读取大型文本文件的最佳方法
        /// </summary>
        /// <param name="pathaname"></param>
        /// <returns></returns>
        public static string readtxt_readlines(string pathaname)
        {
            ienumerable<string> line = system.io.file.readlines(pathaname, encoding.utf8);
            return string.join(environment.newline, line);
        }
        #endregion
    }
}

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com