C#实现文本读取的7种方式

 更新时间:2022年05月16日 08:56:26   作者:​ 苏州程序大白   ​  
这篇文章主要介绍了C#实现文本读取的7种方式,文本读取在上位机开发中经常会使用到,实现的方式也有很多种,下面我们就来分享七种方式,需要的小伙伴可以参考一下

前言

文本读取在上位机开发中经常会使用到,实现的方式也有很多种,今天跟大家分享一下C#实现读取读取的7种方式。

这里我们先写好了一个测试界面,提供一个文件路径选择的入口,具体如下所示:

第一个方式

基于FileStream,并结合它的Read方法读取指定的字节数组,最后转换成字符串进行显示。

 this.rtb_Content.Clear();
            FileStream fs = new FileStream(this.txt_FilePath.Text, FileMode.Open, FileAccess.Read);
            int n = (int)fs.Length;
            byte[] b = new byte[n];
            int r = fs.Read(b, 0, n);
            fs.Close();
            this.rtb_Content.Text = Encoding.UTF8.GetString(b, 0, n);

第二个方式

基于FileStream一个字节``一个字节读取,放到字节数组中,最后转换成字符串进行显示。

            this.rtb_Content.Clear();
            FileStream fs = new FileStream(this.txt_FilePath.Text, FileMode.Open, FileAccess.Read);
            long n = fs.Length;
            byte[] b = new byte[n];
            int data, index;
            index = 0;
            data = fs.ReadByte();
            while (data != -1)
            {
                b[index++] = Convert.ToByte(data);
                data = fs.ReadByte();
            }
            fs.Close();
            this.rtb_Content.Text = Encoding.UTF8.GetString(b);

第三个方式

基于File类,直接全部读取出来并显示。

this.rtb_Content.Clear();
this.rtb_Content.Text = File.ReadAllText(this.txt_FilePath.Text, Encoding.UTF8);

第四个方式

基于StreamReader,一行一行读取,最后拼接并显示:

            this.rtb_Content.Clear();
            StreamReader sr = new StreamReader(this.txt_FilePath.Text, Encoding.UTF8);
            string line = sr.ReadLine();
            while (line != null)
            {
                this.rtb_Content.AppendText(line);
                line = sr.ReadLine();
                if (line != null)
                {
                    this.rtb_Content.AppendText("\r\n");
                }
            }
            sr.Close();

第五个方式

基于StreamReader,一次性读取到结尾,最后显示。

            this.rtb_Content.Clear();
            StreamReader sr = new StreamReader(this.txt_FilePath.Text, Encoding.UTF8);
            this.rtb_Content.Text = sr.ReadToEnd();
            sr.Close();

第六个方式

基于StreamReader,一行一行读取,通过EndOfSteam判断是否到结尾,最后拼接并显示。

            this.rtb_Content.Clear();
            StreamReader sr = new StreamReader(this.txt_FilePath.Text, Encoding.UTF8);

            while (!sr.EndOfStream)
            {
                this.rtb_Content.AppendText(sr.ReadLine());
                if (!sr.EndOfStream)
                {
                    this.rtb_Content.AppendText("\r\n");
                }
            }
            sr.Close();

第七个方式

基于FileStream和StreamReader来实现:

            this.rtb_Content.Clear();
            FileStream fs = new FileStream(this.txt_FilePath.Text, FileMode.Open, FileAccess.Read);
            StreamReader sr = new StreamReader(fs, Encoding.UTF8);
            this.rtb_Content.Text = sr.ReadToEnd();
            fs.Close();
            sr.Close();

经过测试,以上每个方法都可以实现文本文件的读取:

以上7种方式主要是分别基于FileStreamFileStreamReader这三种来实现的,这三种方式的区别在于:

  • FileStream类可以对任意类型的文件进行读取操作,而且我们也可以按照需要指定每一次读取字节长度,以此减少内存的消耗,提高读取效率。
  • StreamReader的特点是,它只能对文本文件进行读写操作,可以一行一行的写入和读取。
  • File类它是一个静态类,当我们查看file类的那些静态方法时,我们可以发现,在这个类里面的方法封装了可以执行文件读写操作的对象,例如:Filestream,StreamReader,我们通过File去执行任何文件的读写操作时,实际上是使用FileStream或SteamReader对象来执行文件的读写操作,代码如下所示:
public static string ReadAllText(string path, Encoding encoding)
        {
            if (path == null)
            {
                throw new ArgumentNullException("path");
            }
            if (encoding == null)
            {
                throw new ArgumentNullException("encoding");
            }
            if (path.Length == 0)
            {
                throw new ArgumentException(Environment.GetResourceString("Argument_EmptyPath"));
            }

            return InternalReadAllText(path, encoding, checkHost: true);
        }
        
        private static string InternalReadAllText(string path, Encoding encoding, bool checkHost)
        {
            using (StreamReader streamReader = new StreamReader(path, encoding, detectEncodingFromByteOrderMarks: true, StreamReader.DefaultBufferSize, checkHost))
            {
                return streamReader.ReadToEnd();
            }
        } 

到此这篇关于C#实现文本读取的7种方式的文章就介绍到这了,更多相关C#文本读取内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#实现简单打字游戏

    C#实现简单打字游戏

    这篇文章主要为大家详细介绍了C#实现简单打字游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • 使用Deflate算法对文件进行压缩与解压缩的方法详解

    使用Deflate算法对文件进行压缩与解压缩的方法详解

    本篇文章是对使用Deflate算法对文件进行压缩和解压缩的方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • C#使用Twain协议实现扫描仪连续扫描功能

    C#使用Twain协议实现扫描仪连续扫描功能

    这篇文章主要介绍了C#使用Twain协议实现扫描仪连续扫描,只需一行代码,就可实现一次扫描多张,且不需要更改扫描仪的任何设置,需要的朋友可以参考下
    2022-01-01
  • Unity实现模型点击事件的方法

    Unity实现模型点击事件的方法

    这篇文章主要介绍了Unity实现模型点击事件的方法,本文通过多种方法给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-05-05
  • C#实现网页画图功能

    C#实现网页画图功能

    这篇文章主要为大家详细介绍了C#实现网页画图功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • WPF实现圆形进度条的示例代码

    WPF实现圆形进度条的示例代码

    这篇文章主要为大家详细介绍了WPF如何实现圆形的进度条,文中的示例代码讲解详细,对我们学习或工作有一定帮助,感兴趣的小伙伴可以了解一下
    2023-01-01
  • c# 快速排序算法

    c# 快速排序算法

    快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)
    2013-10-10
  • C#实现HTTP上传文件的方法

    C#实现HTTP上传文件的方法

    这篇文章主要介绍了C#实现HTTP上传文件的方法,包括了发送文件与接收文件的实现代码,具有不错的参考价值,需要的朋友可以参考下
    2014-11-11
  • 事务在c#中的使用

    事务在c#中的使用

    这篇文章介绍了事务在c#中的使用,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • C#特性 匿名类型与隐式类型局部变量使用介绍

    C#特性 匿名类型与隐式类型局部变量使用介绍

    这篇文章主要介绍了C#特性-匿名类型与隐式类型局部变量,需要的朋友可以参考下
    2014-12-12

最新评论