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

 更新时间:2014年11月06日 15:37:43   投稿:shichen2014  
这篇文章主要介绍了c#分页读取GB文本文件的方法,对于C#实现对大数据量的读取非常具有实用价值,需要的朋友可以参考下

本文实例讲述了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#中Dispose方法与Close方法的区别详解

    探讨C#中Dispose方法与Close方法的区别详解

    本篇文章是对C#中Dispose方法与Close方法的区别进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • C#实现GridView导出Excel实例代码

    C#实现GridView导出Excel实例代码

    本篇文章主要介绍了C#实现GridView导出Excel实例代码,这里整理了详细的代码,非常具有实用价值,需要的朋友可以参考下。
    2017-03-03
  • C#实现的阴历阳历互相转化类实例

    C#实现的阴历阳历互相转化类实例

    这篇文章主要介绍了C#实现的阴历阳历互相转化类,结合实例形式分析了C#针对日期的转换与计算相关操作技巧,需要的朋友可以参考下
    2017-06-06
  • c#获取当前年的周数及当前月的天数示例代码

    c#获取当前年的周数及当前月的天数示例代码

    本篇文章主要是对c#获取当前年的周数及当前月的天数示例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-01-01
  • C#控制Excel Sheet使其自适应页宽与列宽的方法

    C#控制Excel Sheet使其自适应页宽与列宽的方法

    这篇文章主要介绍了C#控制Excel Sheet使其自适应页宽与列宽的方法,涉及C#操作Excel的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • windows系统下,如何在C#程序中自动安装字体

    windows系统下,如何在C#程序中自动安装字体

    在Windows系统中,原有自带的字体样式有限,有时候我们的程序会使用到个别稀有或系统不自带的字体。因此我们需要将字体打包到程序中,当程序启动时,检测系统是否有该字体,如果没有则安装该字体,也可以动态加载字体。
    2020-11-11
  • 关于C#中的Invoke示例详解

    关于C#中的Invoke示例详解

    一直对invoke和begininvoke的使用和概念比较混乱,这两天看了些资料,对这两个的用法和原理有了些新的认识和理解,下面这篇文章主要给大家介绍了关于C#中Invoke的相关资料,需要的朋友可以参考下
    2023-02-02
  • C#连接ODBC数据源的方法

    C#连接ODBC数据源的方法

    这篇文章主要介绍了C#连接ODBC数据源的方法,实例分析了C#连接ODBC操作数据库的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • C#设置WinForm中DataGrid列的方法(列宽/列标题等)

    C#设置WinForm中DataGrid列的方法(列宽/列标题等)

    这篇文章主要介绍了C#设置WinForm中DataGrid列的方法,包括列宽、列标题等部分,并分析了其中相关的操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • 基于C#实现图片滑动验证码的示例代码

    基于C#实现图片滑动验证码的示例代码

    这篇文章主要为大家介绍了如何利用C#语言制作一个图片滑动验证码,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-04-04

最新评论