C#利用緩存分塊讀寫大文件
C#利用緩存分塊讀寫大文件,供大家參考,具體內(nèi)容如下
在日常生活中,可能會遇到大文件的讀取,不論是什么格式,按照儲存文件的格式讀取大文件,就會在Buffer中看到相關(guān)的文件頭合內(nèi)容, 以一次.txt文件存取為例。
using System.IO;
首先創(chuàng)建demo文件,此處文件大小沒關(guān)系,只是演示
private void button2_Click(object sender, EventArgs e)
{
using (FileStream fsWrite = new FileStream(@"D:\1.txt", FileMode.Append))
{
string temp = "";
for (int i = 0; i < 10000;i++ )
{
temp += i.ToString()+"/t";
}
byte [] m = System.Text.Encoding.UTF8.GetBytes (temp);
fsWrite.Write(m, 0, temp.Length);
}
}
讀取創(chuàng)建的文件
private void Readtxt()
{
using (FileStream fsRead = new FileStream(@"d:\2.txt,FileMode.Open"))
{
//剩余文件內(nèi)容長度
long leftLength = fsRead.Length;
//buffersize
int buffersize = 1024;
//創(chuàng)建緩存數(shù)組
byte[] buffer = new byte[buffersize];
int rNum = 0;
int FileStart = 0;
while(leftLength > 0)
{
//設(shè)置文件流的讀取位置
fsRead.Position = FileStart ;
if (leftLength < buffersize)
{
rNum = fsRead.Read(buffer, 0, Convert.ToInt32(leftLength));
}
else
{
rNum = fsRead.Read(buffer, 0, maxLength);
}
if (rNum == 0)
{
break;
}
fileStart += rNum;
leftLength -= rNum;
//字節(jié)轉(zhuǎn)換
string msg = System.Text.Encoding.UTF8.GetString(buffer);//
byte[] myByte = System.Text.Encoding.UTF8.GetBytes(msg);//
//寫入文件
using (FileStream fsWrite = new FileStream(@"d:\2.txt, FileMode.Append))//處理完成再追加
{
fsWrite.Write(myByte, 0, myByte.Length);
}
}
fsRead.Close();
}
}
寫入文件后期,還牽扯到數(shù)據(jù)的拼接與處理
個(gè)人感覺,數(shù)據(jù)如果要按照一定格式拼接,可以通過改變每次讀取的位置,來處理。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
簡單掌握Windows中C#啟動外部程序進(jìn)程的方法
這篇文章主要介紹了Windows中C#啟動外部程序進(jìn)程的方法,例子中同時(shí)包括了進(jìn)程關(guān)閉的方法,需要的朋友可以參考下2016-03-03
C#操作Access數(shù)據(jù)庫的實(shí)現(xiàn)過程(vs2019)
這篇文章主要介紹了C#操作Access數(shù)據(jù)庫的實(shí)現(xiàn)過程(vs2019),打開Office Access新建一個(gè)空白數(shù)據(jù)庫DATA.accdb,并改好存放位置,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-02-02
C#實(shí)現(xiàn)公式計(jì)算驗(yàn)證碼的示例詳解
現(xiàn)在很多的平臺已經(jīng)不使用普通的數(shù)字、字母等驗(yàn)證碼了,取而代之的是拼圖類、選圖類、旋轉(zhuǎn)類或者計(jì)算類的驗(yàn)證碼。本文將利用C#實(shí)現(xiàn)一個(gè)公式計(jì)算驗(yàn)證碼,感興趣的可以了解一下2022-10-10
WinFrom中l(wèi)abel背景透明的實(shí)現(xiàn)方法
這篇文章主要介紹了WinFrom中l(wèi)abel背景透明的實(shí)現(xiàn)方法,方法簡單實(shí)用,是C#程序設(shè)計(jì)中非常實(shí)用的技巧,需要的朋友可以參考下2014-09-09
C#控件Picturebox實(shí)現(xiàn)鼠標(biāo)拖拽功能
這篇文章主要為大家詳細(xì)介紹了C#控件Picturebox實(shí)現(xiàn)鼠標(biāo)拖拽功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09
Unity實(shí)現(xiàn)人物平滑轉(zhuǎn)身
這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)人物平滑轉(zhuǎn)身,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-01-01
C#比較二個(gè)數(shù)組并找出相同或不同元素的方法
這篇文章主要介紹了C#比較二個(gè)數(shù)組并找出相同或不同元素的方法,涉及C#針對數(shù)組的交集、補(bǔ)集等集合操作相關(guān)技巧,非常簡單實(shí)用,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11

