精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于C#實現文本讀取的7種方式是什么

汽車電子技術 ? 來源:dotNet工控上位機 ? 作者: 新閣教育付工 ? 2023-02-22 15:38 ? 次閱讀

前言

文本讀取在上位機開發中經常會使用到,實現的方式也有很多種,今天跟大家分享一下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();

方式7

基于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種方式主要是分別基于FileStream、File和StreamReader這三種來實現的,這三種方式的區別在于:

  • 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();
            }
        }

-END-

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 字符串
    +關注

    關注

    1

    文章

    577

    瀏覽量

    20485
  • 上位機
    +關注

    關注

    27

    文章

    930

    瀏覽量

    54730
  • Read
    +關注

    關注

    0

    文章

    10

    瀏覽量

    11102
收藏 人收藏

    評論

    相關推薦

    《Visual C# 2008程序設計經典案例設計與實現》---動態讀取XMI文件

    《Visual C# 2008程序設計經典案例設計與實現》---動態讀取XMI文件.zip
    發表于 07-08 13:21

    Python與C#對比

    簡潔優美, 簡單,易學。擁有強大的標準庫及第三方庫。Python的使用范圍極廣。C#是微軟公司推出的一功能強大的高級編程語言,能夠迅速、高效地完成Windows平臺上的項目開發,被稱為未來語言
    發表于 05-14 17:14

    請問c#中該怎么讀取數據?

    c#中,選擇性讀取之前保存好的數據,該怎么讀?
    發表于 09-29 10:14

    如何利用C#實現HMACSHA256加密算法呢

    什么是HMAC?如何利用C#實現HMACSHA256加密算法呢?
    發表于 01-20 07:07

    讀取并分析GPS數據的GPSReader程序(C#和VB.net版代碼)

    讀取并分析GPS數據的GPSReader程序(C#和VB.net版代碼)
    發表于 05-26 10:01 ?0次下載
    <b class='flag-5'>讀取</b>并分析GPS數據的GPSReader程序(<b class='flag-5'>C#</b>和VB.net版代碼)

    C#讀取GPS數據的基類工具

    C#讀取GPS數據的基類工具
    發表于 02-08 16:56 ?24次下載

    C語言入門教程-讀取文本文件

    讀取文本文件若要讀取一個文件,請使用r模式打開。一般來說,讀取文件時最好不要用fscanf,因為,除非文件的數據格式非常標準,否則fscanf并不能準確地
    發表于 07-29 11:29 ?2903次閱讀

    使用C#實現Arduino與電腦進行串行通訊 - Alex Le

    希望能夠給Arduino 串口通信需求都以幫助。 C#通信方式
    發表于 12-25 10:19 ?28次下載

    C#教程之自制數值文本框組件

    C#教程之自制數值文本框組件,很好的C#資料,快來學習吧。
    發表于 04-20 10:50 ?10次下載

    C#教程之調用SMTP發送文本內容

    C#教程之調用SMTP發送文本內容,很好的C#資料,快來學習吧。
    發表于 04-20 15:27 ?5次下載

    C#教程之讀取數據庫表結構

    C#教程之讀取數據庫表結構,很好的C#資料,快來學習吧。
    發表于 04-20 15:27 ?6次下載

    《Visual C# 2008程序設計經典案例設計與實現》---

    《Visual C# 2008程序設計經典案例設計與實現》---飛舞的雪花
    發表于 02-07 11:40 ?0次下載

    《Visual C# 2008程序設計經典案例設計與實現》---

    《Visual C# 2008程序設計經典案例設計與實現》---動態讀取XMI文件
    發表于 01-18 20:33 ?0次下載

    《Visual C# 2008程序設計經典案例設計與實現》---

    《Visual C# 2008程序設計經典案例設計與實現》---Visual C# 2008與圖形圖像
    發表于 01-18 20:33 ?1次下載

    C#實現ActiveX控件開發與部署

    C#實現ActiveX控件開發與部署(肇慶理士電源技術有限公司鳥瞰圖)-該文檔為C#實現ActiveX控件開發與部署講解文檔,是一份還算不錯的參考文檔,感興趣的可以下載看看,,,,,,
    發表于 09-27 17:36 ?6次下載
    <b class='flag-5'>C#</b><b class='flag-5'>實現</b>ActiveX控件開發與部署