今天偶遇一同事抱怨,sqlserver导出的CSV,明明有1000W条,但用excel打开就只剩100W了,足足消失了90%,所以她怀疑文件是足量的1000W条,是excel捣了鬼。可是文件容量有2G+,用记事本打不开,如何证明CSV文件没有缺少数据,这可难坏了他。

  好吧,本着不看其他轮子,有问题自己造一个的原则,我决定用控制台程序写一个简易读取程序,具体CODE如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace BigTextReader
{
class Program
{
static void Main(string[] args)
{
string path = "";
do
{
Console.WriteLine("Please input the file path:");
path = Console.ReadLine();
}
while (!System.IO.File.Exists(path));
var fileStream = System.IO.File.OpenRead(path);
while(true)
{
Console.WriteLine("Please input the start position:");
var position = Int64.Parse(Console.ReadLine());
if (position == -)
{
Console.WriteLine("finish");
return;
}
fileStream.Position = position;
var byts = new Byte[];
fileStream.Read(byts, , );
var str = Encoding.UTF8.GetString(byts);
Console.WriteLine(str);
} }
}
}

好了,程序如上图所示,第一步,输入文件的绝对地址,比如d:\a.csv,第二步,输入文本的位置,比如100000,程序默认读取1000个字节作展示。当位置输入为-1时,程序退出。

一个基本的大文本读取器就初见雏形了,用每个ROW的byte数*200W,果然读出了数据,完美的证明了同事的猜想,同时,读取的时间只用了100ms。

PS:个人感觉,Encoding,读取的byte数可以写作配置,但会拖长操作流程,同时,直接Int64.Parse是因为懒,小伙伴们不要效仿哦。

C#读取大文本文件的更多相关文章

  1. Python最快的方式来读取大文本文件(几GB)

    我有一个大文本文件(约7 GB).我正在寻找是否存在阅读大文本文件的最快方法.我一直在阅读有关使用多种方法作为读取chunk-by-chunk以加快进程的过程. 例如,effbot建议 # File: ...

  2. java读取大文本文件

    原文:http://blog.csdn.net/k21325/article/details/53886160 小文件当然可以直接读取所有,然后放到内存中,但是当文件很大的时候,这个方法就行不通了,内 ...

  3. PHP读取大文本文件并处理数据的思路

    //处理文件 $file = fopen($filename, "r") or exit("Unable to open file!"); $total_lin ...

  4. Java多线程读取大文件

    前言 今天是五一假期第一天,按理应该是快乐玩耍的日子,但是作为一个北漂到京师的开发人员,实在难想出去那玩耍.好玩的地方比较远,近处又感觉没意思.于是乎,闲着写篇文章,总结下昨天写的程序吧. 昨天下午朋 ...

  5. Java 读取大文件方法

    需求:实际开发中读取文本文件的需求还是很多,如读取两个系统之间FTP发送文件,读取后保存到数据库中或日志文件的数据库中保存等. 为了测试首先利用数据库SQL生成大数据文件. 规则是 编号|姓名|手机号 ...

  6. Java读写大文本文件(2GB以上)

    如下的程序,将一个行数为fileLines的文本文件平均分为splitNum个小文本文件,其中换行符'r'是linux上的,windows的java换行符是'\r\n': package kddcup ...

  7. Python读取大文件的"坑“与内存占用检测

    python读写文件的api都很简单,一不留神就容易踩"坑".笔者记录一次踩坑历程,并且给了一些总结,希望到大家在使用python的过程之中,能够避免一些可能产生隐患的代码. 1. ...

  8. J2SE 8的输入输出--读取/写入文本文件和读取/写入二进制数据

    读取/写入文本文件 // 1. 文本输入 // (1) 短小文本直接转入字符串 String string = new String(Files.readAllBytes(Paths.get(&quo ...

  9. 使用Apache Commons IO组件读取大文件

    Apache Commons IO读取文件代码如下: Files.readLines(new File(path), Charsets.UTF_8); FileUtils.readLines(new ...

随机推荐

  1. [WPF]MenuItem右侧空白

    <Window> <Grid Background="SteelBlue"> <Grid.ContextMenu> <ContextMen ...

  2. oracle笔记一

    一.Oracle简介 1.Oracle属于关系型数据库,是一款可以在Client/Server模式下运行的RDBMS产品.2009年,Oracle公司收购SUN. 2.Oracle是对象关系型数据库管 ...

  3. Android中View类OnClickListener和DialogInterface类OnClickListener冲突解决办法

    Android中View类OnClickListener和DialogInterface类OnClickListener冲突解决办法 如下面所示,同时导入这两个,会提示其中一个与另一个产生冲突. 1i ...

  4. js制作简单的计算器

    学着做了一个简单的计算器!记录记录!哈哈 <!DOCTYPE html> <html> <head> <title>简单的计算器</title&g ...

  5. hashmap 的作用

    就是一个键值对应的集合HashMap a = new HashMap(); a.put("name", "abcdef"); // key是name,value ...

  6. flume坑之channel.transactionCapacity和HdfsSink.batchSize

    不说过程了,直接说结果!一对相连接的channel-HdfsSink,无意间配置如下:...agent.channels.common-channel.transactionCapacity=10.. ...

  7. hihocoder-平衡树·SBT

    http://hihocoder.com/problemset/problem/1337 #1337 : 平衡树·SBT 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 ...

  8. BADI

    BADI_MATERIAL_CHECK BOM_UPDATE MB_MIGO_BADI ME_GUI_PO_CUST ME_PROCESS_PO_CUST ME_REQ_POSTED WORKORDE ...

  9. Custom Web Servic In MOSS 2007

    Tools: Visual Studio 2008,Visual Studio 2008 Command Prompt, Sharepoint Server 2007 Generate .disco ...

  10. uiscrollView UINavigation和uitabbar添加约束的问题

    首先是层次问题, 我的storyboard中 底层是一个View(viewcontroller自带)上面添加了一个UIScrollview(添加约束, 上下左右全为0), 在UIScrollview上 ...