通过滚动条按块读取文本文件块

嗨我读过这个问题:

阅读非常大的文本文件,我应该合并异步吗?

我特别把STACK OVERFLOW挖了网!

结果是14方法来做到这一点,但没有一个是不完整的!

在最后两天,我正在研究这个并测试和测试了14种方法。

例如 :

private void method() { FileStream FS = new FileStream(path, FileMode.Open, FileAccess.ReadWrite); int FSBytes = (int) FS.Length; int ChunkSize = 24; byte[] B = new byte[ChunkSize]; int Pos; for (Pos = 0; Pos < (FSBytes - ChunkSize); Pos += ChunkSize) { FS.Read(B,0 , ChunkSize); string content = System.Text.Encoding.Default.GetString(B); richTextBox1.Text=content=; } B = new byte[FSBytes - Pos]; FS.Read(B,0, FSBytes - Pos); string content2 = System.Text.Encoding.Default.GetString(B); richTextBox1Text=content2; FS.Close(); FS.Dispose(); } 

对于5mb文本文件,需要太长时间,我该怎么办?

这是每个流读取文本文件以完成您要执行的操作的工作示例。 我用100 MB的文本文件测试了它,它运行良好,但你必须看看更大的文件是否也能正常工作。

这是一个例子。 只需将RichTextBox带到表单和VScrollBar即可。 然后在硬盘’C:’上使用’test.txt’文件。

 public partial class Form1 : Form { const int PAGE_SIZE = 64; // in characters int position = 0; // position in stream public Form1() { InitializeComponent(); } private void vScrollBar1_Scroll(object sender, ScrollEventArgs e) { position = e.NewValue * PAGE_SIZE; ReadFile(position); } private void ReadFile(int position) { using (StreamReader sr = new StreamReader(@"C:\test.txt")) { char[] chars = new char[PAGE_SIZE]; sr.BaseStream.Seek(position, SeekOrigin.Begin); sr.Read(chars, 0, PAGE_SIZE); string text = new string(chars); richTextBox1.Text = text; } } private void Form1_Load(object sender, EventArgs e) { ReadFile(position); } }