C#實現(xiàn)文本讀取的7種方式
前言
文本讀取在上位機開發(fā)中經(jīng)常會使用到,實現(xiàn)的方式也有很多種,今天跟大家分享一下C#實現(xiàn)讀取讀取的7種方式。
這里我們先寫好了一個測試界面,提供一個文件路徑選擇的入口,具體如下所示:
第一個方式
基于FileStream
,并結(jié)合它的Read
方法讀取指定的字節(jié)數(shù)組,最后轉(zhuǎn)換成字符串進行顯示。
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
,一個字節(jié)``一個字節(jié)讀取
,放到字節(jié)數(shù)組中,最后轉(zhuǎn)換成字符串進行顯示。
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,一次性讀取到結(jié)尾,最后顯示。
this.rtb_Content.Clear(); StreamReader sr = new StreamReader(this.txt_FilePath.Text, Encoding.UTF8); this.rtb_Content.Text = sr.ReadToEnd(); sr.Close();
第六個方式
基于StreamReader,一行一行讀取,通過EndOfSteam判斷是否到結(jié)尾,最后拼接并顯示。
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來實現(xiàn):
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();
經(jīng)過測試,以上每個方法都可以實現(xiàn)文本文件的讀?。?/strong>
以上7種方式主要是分別基于FileStream
、File
和StreamReade
r這三種來實現(xiàn)的,這三種方式的區(qū)別在于:
FileStream
類可以對任意類型的文件進行讀取操作,而且我們也可以按照需要指定每一次讀取字節(jié)長度,以此減少內(nèi)存的消耗,提高讀取效率。StreamReader
的特點是,它只能對文本文件進行讀寫操作,可以一行一行的寫入和讀取。File
類它是一個靜態(tài)類,當(dāng)我們查看file
類的那些靜態(tài)方法時,我們可以發(fā)現(xiàn),在這個類里面的方法封裝了可以執(zhí)行文件讀寫操作的對象,例如:Filestream,StreamReader,我們通過File去執(zhí)行任何文件的讀寫操作時,實際上是使用FileStream或SteamReader對象來執(zhí)行文件的讀寫操作,代碼如下所示:
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(); } }
到此這篇關(guān)于C#實現(xiàn)文本讀取的7種方式的文章就介紹到這了,更多相關(guān)C#文本讀取內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#使用Twain協(xié)議實現(xiàn)掃描儀連續(xù)掃描功能
這篇文章主要介紹了C#使用Twain協(xié)議實現(xiàn)掃描儀連續(xù)掃描,只需一行代碼,就可實現(xiàn)一次掃描多張,且不需要更改掃描儀的任何設(shè)置,需要的朋友可以參考下2022-01-01