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ù)的拼接與處理
個人感覺,數(shù)據(jù)如果要按照一定格式拼接,可以通過改變每次讀取的位置,來處理。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持我們。
您可能感興趣的文章
- 01-10C#利用反射技術(shù)實現(xiàn)去掉按鈕選中時的邊框效果
 - 01-10winform簡單緩存類實例
 - 01-10C#圖片處理3種高級應(yīng)用
 - 01-10C#異步下載文件
 - 01-10C# Console利用mspaint打開圖像并保存的方法
 - 01-10C#利用delegate實現(xiàn)Javascript的each方法
 - 01-10C#利用GDI繪制常見圖形和文字
 - 01-10利用C#實現(xiàn)網(wǎng)絡(luò)爬蟲
 - 01-10C# 利用ICSharpCode.SharpZipLib實現(xiàn)在線壓縮和解壓縮
 - 01-10C#利用時間和隨即字符串創(chuàng)建唯一的訂單編號
 


閱讀排行
本欄相關(guān)
- 01-10C#通過反射獲取當前工程中所有窗體并
 - 01-10關(guān)于ASP網(wǎng)頁無法打開的解決方案
 - 01-10WinForm限制窗體不能移到屏幕外的方法
 - 01-10WinForm繪制圓角的方法
 - 01-10C#實現(xiàn)txt定位指定行完整實例
 - 01-10WinForm實現(xiàn)仿視頻播放器左下角滾動新
 - 01-10C#停止線程的方法
 - 01-10C#實現(xiàn)清空回收站的方法
 - 01-10C#通過重寫Panel改變邊框顏色與寬度的
 - 01-10C#實現(xiàn)讀取注冊表監(jiān)控當前操作系統(tǒng)已
 
隨機閱讀
- 01-10C#中split用法實例總結(jié)
 - 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
 - 08-05DEDE織夢data目錄下的sessions文件夾有什
 - 01-10使用C語言求解撲克牌的順子及n個骰子
 - 04-02jquery與jsp,用jquery
 - 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
 - 01-10delphi制作wav文件的方法
 - 08-05織夢dedecms什么時候用欄目交叉功能?
 - 01-11ajax實現(xiàn)頁面的局部加載
 - 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
 


