C 高效的讀取大型文字檔案的方法

2021-05-24 23:53:22 字數 2021 閱讀 6320

ufferedstream+filestream+streamreader

開個10m緩衝池,然後加上非同步,速度飛飛的。

[vb.net][c#.net] memorystream / bufferedstream 類別

memorystreamstringreader / stringwriter類別用法差不多,但兩者還是些微不同;memorystream可以將已經寫入記憶體的資料,直接另存到實體檔案,而stringwriter不能直接存。

private

void button1_click(object sender, eventargs e)

private

sub button1_click(byval sender as system.object, byval e as system.eventargs) handles button1.click

'引用memorystream類別
dim mymem as memorystream = new memorystream()
'引用streamwriter類別
dim mywriter as streamwriter = new streamwriter(mymem)
'寫資料至記憶體
mywriter.write("寫資料至:")
mywriter.writeline("記憶體(memory)")
'寫資料至檔案
mywriter.flush()
dim myfile as filestream = file.open("c:/myfile.txt", filemode.openorcreate)
mymem.writeto(myfile)
'釋放
myfile.dispose()
mywriter.dispose()
mymem.dispose()
end sub

bufferedstream 類別,是將緩衝層加入另一資料流上的讀寫。

有時候直接將資料寫入檔案效能並不好,由其是在處理大筆資料時,為了提高處理效率可以使用bufferedstream 類別,將資料寫入緩衝區內,當緩衝區被全部清除輸出時,資料才會真正的被寫入資料。

private

void button2_click(object sender, eventargs e)

private

sub button2_click(byval sender as system.object, byval e as system.eventargs) handles button2.click

dim myfile as filestream = file.open("c:/myfile.txt", filemode.create, fileaccess.write, fileshare.write)
dim mybuf as bufferedstream = new bufferedstream(myfile)
dim mywrite as streamwriter = new streamwriter(mybuf)
mywrite.write("寫入緩衝區")
mywrite.writeline("步驟還真麻煩")
mybuf.flush()
'釋放
mywrite.dispose()
mybuf.dispose()
myfile.dispose()
end sub

若有謬誤,煩請告知,新手發帖請多包涵

Python讀取大型文字檔案

最近磕鹽過程中需要處理乙個大型文字檔案,大約70g。在按行讀取檔案過程中遇到了載入慢,記憶體占用過高的問題。經過查詢資料最終解決了問題。趁此機會也大致總結比較一下python開啟檔案的幾種方式。f open filename,r lines f.readlines for line in lines...

C 讀取文字檔案

很多初學c 的同學,對於讀取文字檔案,並按照行處理資料總是有點不知如何開始,作為c 的初學者,自己在這裡做一點筆記。其實利用c 按行讀取文字檔案其實很簡單。假設有乙個文字檔案,如下所示 1 2 3 2 3 4 3 4 5 5 6 7 7 8 9 檔名為split.txt 目的 按照行讀取資料,並乙個...

讀取文字檔案

void ctestdlg onreadinfo cfile filewrite1 testwrite1.txt cfile modecreate cfile modewrite cfile filewrite2 testwrite2.txt cfile modecreate cfile modew...