




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
前言文本讀取在上位機(jī)開(kāi)發(fā)中經(jīng)常會(huì)使用到,實(shí)現(xiàn)的方式也有很多種,今天跟大家分享一下C#實(shí)現(xiàn)讀取讀取的7種方式。這里我們先寫(xiě)好了一個(gè)測(cè)試界面,提供一個(gè)文件路徑選擇的入口,具體如下所示:方式一基于FileStream,并結(jié)合它的Read方法讀取指定的字節(jié)數(shù)組,最后轉(zhuǎn)換成字符串進(jìn)行顯示。
this.rtb_Content.Clear();
FileStreamfs
=
newFileStream(this.txt_FilePath.Text,
FileMode.Open,
FileAccess.Read);
intn
=
(int)fs.Length;
byte[]
b
=
newbyte[n];
intr
=
fs.Read(b,
0,
n);
fs.Close();
this.rtb_Content.Text
=
Encoding.UTF8.GetString(b,
0,
n);方式二基于FileStream,一個(gè)字節(jié)一個(gè)字節(jié)讀取,放到字節(jié)數(shù)組中,最后轉(zhuǎn)換成字符串進(jìn)行顯示。
this.rtb_Content.Clear();
FileStreamfs
=
newFileStream(this.txt_FilePath.Text,
FileMode.Open,
FileAccess.Read);
longn
=
fs.Length;
byte[]
b
=
newbyte[n];
intdata,
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類(lèi),直接全部讀取出來(lái)并顯示。
this.rtb_Content.Clear();
this.rtb_Content.Text
=
File.ReadAllText(this.txt_FilePath.Text,
Encoding.UTF8);方式四基于StreamReader,一行一行讀取,最后拼接并顯示。
this.rtb_Content.Clear();
StreamReadersr
=
newStreamReader(this.txt_FilePath.Text,
Encoding.UTF8);
stringline
=
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();
StreamReadersr
=
newStreamReader(this.txt_FilePath.Text,
Encoding.UTF8);
this.rtb_Content.Text
=
sr.ReadToEnd();
sr.Close();方式六基于StreamReader,一行一行讀取,通過(guò)EndOfSteam判斷是否到結(jié)尾,最后拼接并顯示。
this.rtb_Content.Clear();
StreamReadersr
=
newStreamReader(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來(lái)實(shí)現(xiàn)。
this.rtb_Content.Clear();
FileStreamfs
=
newFileStream(this.txt_FilePath.Text,
FileMode.Open,
FileAccess.Read);
StreamReadersr
=
newStreamReader(fs,
Encoding.UTF8);
this.rtb_Content.Text
=
sr.ReadToEnd();
fs.Close();
sr.Close();測(cè)試結(jié)果經(jīng)過(guò)測(cè)試,以上每個(gè)方法都可以實(shí)現(xiàn)文本文件的讀取??偨Y(jié)以上7種方式主要是分別基于FileStream、File和StreamReader這三種來(lái)實(shí)現(xiàn)的,這三種方式的區(qū)別在于:FileStream類(lèi)可以對(duì)任意類(lèi)型的文件進(jìn)行讀取操作,而且我們也可以按照需要指定每一次讀取字節(jié)長(zhǎng)度,以此減少內(nèi)存的消耗,提高讀取效率。StreamReader的特點(diǎn)是,它只能對(duì)文本文件進(jìn)行讀寫(xiě)操作,可以一行一行的寫(xiě)入和讀取。File類(lèi)它是一個(gè)靜態(tài)類(lèi),當(dāng)我們查看file類(lèi)的那些靜態(tài)方法時(shí),我們可以發(fā)現(xiàn),在這個(gè)類(lèi)里面的方法封裝了可以執(zhí)行文件讀寫(xiě)操作的對(duì)象,例如:Filestream,StreamReader,我們通過(guò)File去執(zhí)行任何文件的讀寫(xiě)操作時(shí),實(shí)際上是使用FileStream或SteamReader對(duì)象來(lái)執(zhí)行文件的讀寫(xiě)操作,代碼如下所示:
publicstaticstringReadAllText(stringpath,
Encodingencoding)
{
if
(path
==
null)
{
thrownewArgumentNullException("path");
}
if
(encoding
==
null)
{
thrownewArgumentNullException("encoding");
}
if
(path.Length
==
0)
{
thrownewArgumentException(Environment.GetResourceString("Argument_EmptyPath"));
}
return
InternalReadAllText(path,
encoding,
checkHost:
true);
}
privatestaticstringInternalReadAllText(stringpath,
Encodingencoding,
boolcheckHost)
{
using
(StreamReaderstreamReader
=
new
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年孩子上學(xué)的勞動(dòng)合同模板打印
- 2025年基站場(chǎng)地租賃協(xié)議
- 2024-2025學(xué)年五年級(jí)下學(xué)期數(shù)學(xué) 倍數(shù)與因數(shù)《《倍數(shù)與因數(shù)》練習(xí)課 》教案
- Unit 6 Section A 3a-3c(教學(xué)設(shè)計(jì))-2024-2025學(xué)年人教新目標(biāo)Go For It!英語(yǔ)八年級(jí)上冊(cè)
- 2025年黑龍江冰雪體育職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)及參考答案
- 2025年湖南高爾夫旅游職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)學(xué)生專(zhuān)用
- 2025年甘肅農(nóng)業(yè)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)參考答案
- 2025年湖南鐵路科技職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)完整
- 2025年河南藝術(shù)職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)完美版
- 2025年廣東省韶關(guān)市單招職業(yè)適應(yīng)性測(cè)試題庫(kù)參考答案
- 家校共育之道
- 公司EHS知識(shí)競(jìng)賽題庫(kù)附答案
- DeepSeek入門(mén)寶典培訓(xùn)課件
- 社區(qū)健康促進(jìn)工作計(jì)劃
- 《作文中間技巧》課件
- 2025年度移動(dòng)端SEO服務(wù)及用戶(hù)體驗(yàn)優(yōu)化合同
- 中小學(xué)《清明節(jié)活動(dòng)方案》班會(huì)課件
- 廣東省2025年中考物理仿真模擬卷(深圳)附答案
- 【公開(kāi)課】同一直線上二力的合成+課件+2024-2025學(xué)年+人教版(2024)初中物理八年級(jí)下冊(cè)+
- 人教鄂教版六年級(jí)下冊(cè)科學(xué)全冊(cè)知識(shí)點(diǎn)
- 鄭州市地圖含區(qū)縣可編輯可填充動(dòng)畫(huà)演示矢量分層地圖課件模板
評(píng)論
0/150
提交評(píng)論