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#,读取
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
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
![](https://img.aspxhome.com/file/2023/5/62425_0s.png)
Java实现五子棋游戏的完整代码
2022-07-01 15:32:34
![](https://img.aspxhome.com/file/2023/8/62328_0s.jpg)
Java 数据结构与算法系列精讲之时间复杂度与空间复杂度
2022-03-19 20:19:50
![](https://img.aspxhome.com/file/2023/6/75656_0s.gif)
C# 4.0 大数的运算--BigInteger的应用详解
2022-02-02 06:40:05
![](https://img.aspxhome.com/file/2023/2/74832_0s.png)
使用idea+gradle编译spring5.x.x源码分析
2022-05-13 15:13:31
![](https://img.aspxhome.com/file/2023/3/83453_0s.jpg)
iOS WebView中使用webp格式图片的方法
2023-06-17 22:06:03
java IO流将一个文件拆分为多个子文件代码示例
2023-08-30 12:46:15
![](https://img.aspxhome.com/file/2023/3/58193_0s.jpg)
Java正则验证正整数的方法分析【测试可用】
2022-08-02 21:50:05
![](https://img.aspxhome.com/file/2023/9/66229_0s.jpg)
Java实战宠物医院预约挂号系统的实现流程
2022-12-28 03:07:52
![](https://img.aspxhome.com/file/2023/9/74989_0s.jpg)
Spring Boot教程之提高开发效率必备工具lombok
2021-08-23 11:12:43
![](https://img.aspxhome.com/file/2023/9/61609_0s.png)
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