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
投稿

猜你喜欢

  • java不同版本在多线程中使用随机数生成器的实现

    2022-01-02 22:57:07
  • 详解spring-boot actuator(监控)配置和使用

    2022-07-12 17:20:37
  • 如何将javaweb项目部署到linux下

    2023-11-11 11:45:11
  • Spring maven filtering使用方法详解

    2021-07-02 22:14:46
  • C#中使用split分割字符串的几种方法小结

    2023-06-18 17:23:21
  • 简单了解Spring中常用工具类

    2021-09-24 10:44:28
  • Android中GIF动图的播放控制和监听详解

    2023-12-08 18:15:01
  • 图文详解SpringBoot中Log日志的集成

    2023-05-27 09:55:13
  • Java实现五子棋游戏的完整代码

    2022-07-01 15:32:34
  • Java 数据结构与算法系列精讲之时间复杂度与空间复杂度

    2022-03-19 20:19:50
  • C# 4.0 大数的运算--BigInteger的应用详解

    2022-02-02 06:40:05
  • 使用idea+gradle编译spring5.x.x源码分析

    2022-05-13 15:13:31
  • iOS WebView中使用webp格式图片的方法

    2023-06-17 22:06:03
  • java IO流将一个文件拆分为多个子文件代码示例

    2023-08-30 12:46:15
  • Java正则验证正整数的方法分析【测试可用】

    2022-08-02 21:50:05
  • Java实战宠物医院预约挂号系统的实现流程

    2022-12-28 03:07:52
  • Spring Boot教程之提高开发效率必备工具lombok

    2021-08-23 11:12:43
  • Java 1.8使用数组实现循环队列

    2022-02-11 04:00:10
  • List转换成DataSet实现代码

    2023-03-02 04:46:01
  • c#在WebAPI使用Session的方法

    2023-07-07 23:20:10
  • asp之家 软件编程 m.aspxhome.com