当前位置: 首页 > 编程笔记 >

c#分页读取GB文本文件实例

华峰
2023-03-14
本文向大家介绍c#分页读取GB文本文件实例,包括了c#分页读取GB文本文件实例的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了c#分页读取GB文本文件的方法。分享给大家供大家参考。具体如下:

一、应用场景:

① .我在做BI开发测试的时候,有可能面对source文件数GB的情况,如果使用一般的文本编辑器,则会卡死,或要等很久才能显示出来。
② .有时候,我们使用ascii(01)或ascii(02)作为行或列的分隔符,这样的临时文件用于导数据到DB,如果文件导入过程中有错误,需要查看文件 的时候,普通的编辑器不支持换行,则会很恐怖。

为解决这两个需求,我使用c#完成了一个简单的winform的应用程序

功能列表:

1.根据配置的行数,写测试文件,指定行终止符,列分隔符暂时没有使用上。
2.根据指定的行终止符,和pagesize,分页读取文件内容,而且可以在text和byte间转换。

二、实现代码:

主要的代码如下,使用了一个迭代器:

private IEnumerator<string> ReadLines(string filename)

{

/*

string line;

using (TextReader reader = File.OpenText(filename))

{

while ((line = reader.ReadLine()) != null)

yield return line;

}

*/

StringBuilder sb = new StringBuilder();

using (FileStream fs = File.OpenRead(filename))

{

int b = 0;

while ((b=fs.ReadByte())!=-1)

{

//textbox3 store the row terminator

if (b.ToString() == textBox3.Text.Trim())

{

yield return sb.ToString();

sb.Clear();

}

else

sb.Append(UnicodeEncoding.ASCII.GetString(new byte[] { byte.Parse(b.ToString()) }));

}

}

}

示例截图如下所示:

我测试了一次,生成了1个亿的数据行,在系统中显示占用6GB的空间,
我尝试读写,无卡顿情况。
可以进一步更新:
根据列行分隔符显示到gridview中,这样更清晰。
可以从后往前读文件。

希望本文所述对大家的C#程序设计有所帮助。

 类似资料:
  • 本文向大家介绍Python读取分割压缩TXT文本文件实例,包括了Python读取分割压缩TXT文本文件实例的使用技巧和注意事项,需要的朋友参考一下 废话不多说,上代码看吧! 以上这篇Python读取分割压缩TXT文本文件实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 问题内容: 我有一些带有时间信息的文本文件,例如: 现在,我需要文件的第三列来计算平均值。 我怎样才能做到这一点?我需要获取所有文本行,然后获取最后一列? 问题答案: 您可以阅读通过线使用的文件中的行或,甚至一些其他techinique。使用扫描仪非常简单,如下所示: 要使用定义的分隔符分割字符串,可以使用split方法,该方法将正则表达式作为参数,并按与该表达式匹配的所有字符序列分割字符串。就您

  • 我正在尝试从C#中的文档文件中读取文本 我无法在C#中创建新文档。 我尝试使用“using microsoft.office.interop.word”或“using system.windows.documents”,但它无法识别代码“Document doc=new Document”。 此外,如何从.docx文件中读取文本? 会有什么问题?TNX

  • 问题内容: 我正在python 2.7中读取800 GB的xml文件,并使用etree迭代解析器对其进行解析。 目前,我只使用没有缓冲参数。我是应该采用这种方法还是应该使用缓冲参数,还是应该使用io.BufferedReader或io.open或io.TextIOBase之类的方法,对此感到有些困惑。 朝正确方向的观点将不胜感激。 问题答案: 默认情况下,标准函数已经返回一个缓冲文件(如果在您的平

  • 本文向大家介绍C#读取文本文件到listbox组件的方法,包括了C#读取文本文件到listbox组件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#读取文本文件到listbox组件的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。

  • 问题内容: 我正在尝试读取以下形式的大文本文件: 我想在文本文件中将此字符串作为一个大的Java字符串读取。这可能吗?我知道使用split方法。 它可以逐行读取它,但我真正需要的是在“ +”号处分割此长文本字符串。之后,我想将其存储为数组,arraylist,列表,… 谁能帮我这个?因为互联网上的所有信息都只是逐行读取文件。提前致谢! 问题答案: 您可以使用或任何IO类读取文件。假设文件中包含该字