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#程序设计有所帮助。

除声明外,跑步客文章均为原创,转载请以链接形式标明本文地址
  c#分页读取GB文本文件实例

本文地址:  http://www.paobuke.com/develop/c-develop/pbk23331.html

相关内容

C#微信开发之发送模板消息

C#使用Selenium+PhantomJS抓取数据

C#6.0中10大新特性的应用和总结

详解C#中使用对象或集合的初始值设定项初始化的操作


C#、ASP.NET通用扩展工具类之LogicSugar

WebService μ??òμ¥·a×°?ó?úμ÷ó?·?·¨

C#简单发送email的方法

C#委托现实示例分析

时间: 2024-07-28 16:32:35

c#分页读取GB文本文件实例的相关文章

c#分页读取GB文本文件

原文:c#分页读取GB文本文件 应用场景: a.我在做BI开发测试的时候,有可能面对source文件数GB的情况,如果使用一般的文本编辑器,则会卡死,或要等很久才能显示出来. b.有时候,我们使用ascii(01)或ascii(02)作为行或列的分隔符,这样的临时文件用于导数据到DB,如果文件导入过程中有错误,需要查看文件 的时候,普通的编辑器不支持换行,则会很恐怖. 为解决这两个需求,我使用c#完成了一个简单的winform的应用程序. 功能列表: 1.根据配置的行数,写测试文件,指定行终止符

A.PHP读取txt文本文件并分页显示的方法

PHP读取txt文本文件并分页显示的方法 作者:TomRobert 字体:[增加 减小] 类型:转载 时间:2015-03-11我要评论 这篇文章主要介绍了PHP读取txt文本文件并分页显示的方法,涉及php操作文件的技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了PHP读取txt文本文件并分页显示的方法.分享给大家供大家参考.具体实现方法如下: 复制代码代码如下: <?php    session_start();     if (empty($page)) {$page=1;

C#快速随机按行读取大型文本文件

原文:C#快速随机按行读取大型文本文件 下面是我实现的一个数据文件随机读取类,可以随机读取大型文本文件的某一行.在我机器上对一个130MB的文本文件,读取第200000的速度从传统做法的400ms提高到了3ms. 一般对文本文件进行读取时,一般采用ReadLine()进行逐行读取.在这种情况下,C#内的FileStream和BufferedStream类处理绰绰有余了.它不会将整个文件全部读入,而是有缓冲的读.但是,要想随机读取某一行,在行数据长度不统一的情况下,如果每次这样遍历到指定行,其效率

PHP逐行读取Text文本文件

php逐行读取文本文件的内容. php文件 $handler = fopen('test6.txt','r'); //打开文件 while(!feof($handler)){ $m[] = fgets($handler,4096); //fgets逐行读取,4096最大长度,默认为1024 } fclose($handler); //关闭文件 //输出文件 echo '<pre>'; print_r($m); echo '</pre>'; Text文本 ddddds sdfasdf

使用shell分页读取600万+的MySQL数据脚本

shell-mysql  (1)脚本背景:  由于要在Linux上,远程读取mysql的表的数据,然后做一定清洗后,把数据上传至Hadoop集群中,使用Java写吧,感觉太麻烦了,得在Win上开发好,还得打成jar包, 上传到Linux上,如果那里出了问题,还得重复这样,非常不方便,那就用shell写一个吧,也不需要什么jdbc驱动包,只需要在Linux上装个MySQL的 客户端即可,用一行yum命令即可搞定,所以就花了点时间,封装了一个小脚本 (2)功能介绍:  直接在Linux下使用shel

sql脚本读取txt文本文件插入新表

今天老大让我录入一大批数据,我的第一个想法就是用inser来一条条插入,或者用C#代码读取Excel然后再插入到数据库,经过老大的介绍.我才知道,还有用sql脚本导入数据的方法.呵呵,真的是长知识了.其实代码很简单 BULK INSERT cartemp FROM 'd:\1.txt' WITH( FIELDTERMINATOR = '\t', ROWTERMINATOR = '\n' ) 可是执行后一直报这样的错误.让我找不到原因,百度了好多解释,却解决不了我的问题 消息 4832,级别 16

使用 EBS 优化的实例或 10 Gb 网络实例

对于需要最少变化以及专用 Amazon EC2 到 Amazon EBS 流量的任何性能敏感型工作负载(如生产数据库或业务应用程序),均应使用附加到 EBS 优化实例或具有 10 Gb 网络连接的实例的卷.不符合此条件的 EC2 实例不提供网络资源保证.确保 EC2 实例与 EBS 卷之间的持续可靠网络带宽的唯一方法是将 EC2 实例作为 EBS 优化实例启动,或选择具有 10 Gb 网络连接的实例类型. 启动进行了 EBS 优化的实例可为您提供 EC2 实例与 EBS 卷之间的专用连接.然而,

c#写对象来读取TXT文本文件

本博文让你知道怎样写对象,怎样读取文本文件,怎样根据实际条件判断与获取需要的文本行.参考下面网友的问题,根据源文来看,有些行输出的格式,需要把“,”替换为空格. 第一行还附加入后面的子行每一行的后面,空格分隔. Insus.NET也参考网友的要求,准备好相似的文本文件数据,不过有所扩展,加多两组. 122 207273-001,A001 207273-003,A001 207273-004,A001 132 207273-051,Q001 207273-053,Q001 207273-054,Q

CodeSmith生成实体的分页读取规则

首先.我得向咱们博客园提个意见,能不能我写的东西就给预保存下呢?刚才我写半天,只因为这个不给力的IE浏览器死了,导致我白写了,如果这要是那个大神直接在这上面写的非常有技术含量的贴着会因此而丢失实在是有点随损失了是吧!! 其次.正题来了,前几天我应领导的要求,需要给维护的项目添加功能,突然发现生成实体的CodeSmith模板丢了(项目好长时间没维护了,也可能当时就没有签到项目管理上),在这种恐怖的情况下,我只有自己整模板了,于是乎我就自己生实体改项目,前期一切都如我所愿.什么事都有个异常,刚发到线