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()) }));
}
}
}
示例截图如下所示:
我测试了一次,生成了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