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

作者:shichen2014 时间:2021-09-13 10:18:39 

本文实例讲述了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()) }));
}
}
}

示例截图如下所示:

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

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

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

标签:c#,读取
0
投稿

猜你喜欢

  • 史上最全Android build.gradle配置详解(小结)

    2023-05-09 00:08:36
  • springboot配置https访问的方法

    2022-12-11 16:17:37
  • myeclipse安装Spring Tool Suite(STS)插件的方法步骤

    2023-02-22 00:56:02
  • Spring Boot配置Thymeleaf(gradle)的简单使用

    2023-04-18 07:41:42
  • 浅谈java并发之计数器CountDownLatch

    2023-03-21 23:42:59
  • DataGridView冻结列或行、列顺序调整、操作行头列头标题的方法

    2021-10-25 06:53:41
  • 简单实现Android应用的启动页

    2022-04-15 14:23:45
  • 一文带你了解C#中的协变与逆变

    2022-08-06 22:31:21
  • 封装的android监听手指左右滑动屏幕的事件类分享

    2021-10-21 07:10:08
  • 探讨如何用委托处理排序

    2023-12-17 15:06:36
  • spring boot项目快速构建的全步骤

    2023-11-16 21:16:38
  • 如何用C#实现SAGA分布式事务

    2022-11-29 20:34:49
  • C#最简单的字符串加密解密方法

    2022-10-30 12:46:36
  • C#中循环语句:while、for、foreach的使用

    2022-05-01 02:42:55
  • Java SpringBoot的相关知识点详解

    2023-11-23 02:36:35
  • Java并发编程之阻塞队列详解

    2022-06-20 02:08:19
  • Android数据存储几种方式讲解

    2023-09-25 19:00:35
  • 高效的java版排列组合算法

    2022-01-24 07:13:13
  • JavaTCP上传图片代码实例

    2022-02-08 19:05:18
  • java控制台实现学生信息管理系统

    2023-11-29 02:05:20
  • asp之家 软件编程 m.aspxhome.com