首页 > 编程语言 >基于C#实现文本读取的方法

基于C#实现文本读取的方法

时间:2022-11-25 12:01:24浏览次数:47  
标签:fs 读取 C# sr richTextBox1 Text new 文本 StreamReader

这里介绍文本读取常用的方法,主要是采用FileStream或StreamReader进行文件读取,使用的界面如下:

 

 代码如下:

using System;
using System.IO;
using System.Text;
using System.Windows.Forms;

namespace 读取text文件
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

        }
        OpenFileDialog ofd;
        private void button1_Click(object sender, EventArgs e)
        {
            ofd = new OpenFileDialog();            
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                this.textBox1.Text = ofd.FileName;
            }
        }

        private void btnReadFile1_Click(object sender, EventArgs e)
        {
            //基于FileStream,并结合它的Read方法读取指定的字节数组,最后转换成字符串进行显示。
            this.richTextBox1.Clear();
            FileStream fs = new FileStream(this.textBox1.Text, FileMode.Open, FileAccess.Read);
            int n = (int)fs.Length;
            byte[] buffer = new byte[n];
            fs.Read(buffer, 0, n);
            fs.Close();
            this.richTextBox1.Text = Encoding.UTF8.GetString(buffer, 0, n);
        }

        private void btnReadFile2_Click(object sender, EventArgs e)
        {
            //基于FileStream,一个字节一个字节读取,放到字节数组中,最后转换成字符串进行显示。
            this.richTextBox1.Clear();
            FileStream fs = new FileStream(this.textBox1.Text, FileMode.Open, FileAccess.Read);
            int n = (int)fs.Length;
            byte[] bytes = new byte[n];
            int data, index = 0;
            data = fs.ReadByte();//每次读一个byte,读到末尾数时为-1
            while (data != -1)
            {
                bytes[index++] = (byte)data;
                data = fs.ReadByte();
            }
            fs.Close();
            this.richTextBox1.Text = Encoding.UTF8.GetString(bytes);
        }

        private void btnReadFile3_Click(object sender, EventArgs e)
        {
            //基于File类,直接全部读取出来并显示。
            this.richTextBox1.Clear();
            this.richTextBox1.Text = File.ReadAllText(this.textBox1.Text, Encoding.UTF8);
        }

        private void btnReadFile4_Click(object sender, EventArgs e)
        {
            //基于StreamReader,一次性读取到结尾,最后显示。
            this.richTextBox1.Clear();
            StreamReader sr = new StreamReader(this.textBox1.Text, Encoding.UTF8);
            string str = sr.ReadToEnd();
            sr.Close();
            this.richTextBox1.Text = str;
        }

        private void btnReadFile5_Click(object sender, EventArgs e)
        {
            //基于StreamReader,一行一行读取,最后拼接并显示。
            this.richTextBox1.Clear();
            StreamReader sr = new StreamReader(this.textBox1.Text, Encoding.UTF8);
            string str = sr.ReadLine();
            while (str != null)
            {
                this.richTextBox1.AppendText(str);
                str = sr.ReadLine();
                if (str != null)
                {
                    this.richTextBox1.AppendText("\r\n");//每读完一行数据要进行回车换行
                }
            }
            sr.Close();
        }

        private void btnReadFile6_Click(object sender, EventArgs e)
        {
            //基于StreamReader,一行一行读取,通过EndOfSteam判断是否到结尾,最后拼接并显示。
            this.richTextBox1.Clear();
            StreamReader sr = new StreamReader(this.textBox1.Text, Encoding.UTF8);
            while (!sr.EndOfStream)
            {
                this.richTextBox1.AppendText(sr.ReadLine());
                if (!sr.EndOfStream)
                {
                    this.richTextBox1.AppendText("\r\n");
                }
            }
            sr.Close();
        }

        private void btnReadFile7_Click(object sender, EventArgs e)
        {
            //基于FileStream和StreamReader来实现。
            this.richTextBox1.Clear();
            FileStream fs = new FileStream(this.textBox1.Text, FileMode.Open, FileAccess.Read);
            StreamReader sr = new StreamReader(fs, Encoding.UTF8);
            this.richTextBox1.Text = sr.ReadToEnd();
            fs.Close();
            sr.Close();
        }
    }
}

 

标签:fs,读取,C#,sr,richTextBox1,Text,new,文本,StreamReader
From: https://www.cnblogs.com/hanzq/p/16924687.html

相关文章

  • SaltStack 五
    #salt的生产实践不推荐使用file目录模块模块进行代码部署不建议salt管理项目的配置文件,建议分层管理,salt只管理应用服务若有固定的文件服务器,可以使用source:......
  • SaltStack 四
    #Apache监听本地IP地址结合jinjia模板变量使用Grains:{{grains['fqdn_ip4'][0]}}变量使用执行模块:{{salt['network.hw_addr']('eth0')}}变量使用Pillar:{{pil......
  • SaltStack 三
    #salt数据系统:Grains&Pillar#Minion启动时收集(静态数据)#grains应用场景:grains可以再salt系统中用于配置管理模块Grains可以以target中使用,用来匹配Minion......
  • SaltStack 二
    #Tomcat安装管理1.vimtomcat.slsjdk-install:pkg.installed:-name:java-1.8.0-openjdktomcat-install:file.managed:-name:/usr/local/src/apache-tomc......
  • 题解 I. gcd -“山大地纬杯”第十二届山东省ICPC大学生程序设计竞赛(正式赛)
    传送门VP的时候失误推错太多次了,写个博客总结一下【大意】求所有长度为\(m\)且和为\(n\)的正整数序列\(a\)的贡献和。其中,每个数列的贡献为\(\displaystyle\s......
  • copy构造函数为什么一定要传引用?
    原因:如果拷贝构造函数中的参数不是一个引用,即形如CClass(constCClassc_class),那么就相当于采用了传值的方式(pass-by-value),而传值的方式会调用该类的拷贝构造函......
  • Uncaught(in promise) TypeError: data.map is not a function 控制台报错
     这个报错意思提示data.map不是一个函数,表明map这个方法不存在没起到作用,map函数只对数组起作用,表明data不是一个数组对map函数起不到作用,所以需添加以下代码做一个判......
  • Oracle数据库批量删除表、视图、序列、存储过程、函数脚本
    批量删除表、视图、序列、存储过程、函数前,生成对应的SQL执行脚本,然后执行生成对应的脚本即可:一、删除数据库表   --生成删除oracle数据库表的脚本语句   select......
  • docker 网络
    1.Docker网络类型安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络)、 none 、host。使用命令查看当前Docker所有的网络模式。[root@VM-4-13-centos......
  • VScode工程中屏蔽文件和文件夹
    作用在一个大型项目中,移植过程中相关文件在此工程中不需要。在编辑和分析代码时减轻阅读量,且不是删除源文件。过程在工程顶层目录中新建.vscode文件夹,在该文件夹下面......