C# 读取大文件 (可以读取3GB大小的txt文件)
在处理大数据时,有可能 会碰到 超过3GB大小的文件,如果通过 记事本 或 NotePad++去打开它,会报错,读不到任何文件。
如果你只是希望读取这文件中的前几行,怎么办,下面的工具会帮您解决这个问题. 而且读取时间很快。
截图:
工具下载地址: http://pan.baidu.com/s/1y34wt (15KB左右, 备注:要运行这个工具,需要您的机器已装过 .netFramework4.0 )
源代码下载地址:http://pan.baidu.com/s/1jAyjl (70KB左右)
源代码样例:
1,读取一般文件的代码
public static string ReaderFile(string path)
{
string fileData = string.Empty;
try
{ ///读取文件的内容
StreamReader reader = new StreamReader(path, Encoding.Default);
fileData = reader.ReadToEnd();
reader.Close();
}
catch (Exception ex)
{
// throw new Exception(ex.Message,ex);
} ///抛出异常
return fileData;
}
2, 读取 大文件(大到约4个GB的文本文件)
private bool ReadBigFile()
{
string sTmpFile=@"c:\tmpTest.txt";
if (File.Exists(sTmpFile))
{
File.Delete(sTmpFile);
} if (!System.IO.File.Exists(sTmpFile))
{
FileStream fs;
fs = File.Create(sTmpFile);
fs.Close();
} if (!File.Exists(txtFileName.Text.Trim()))
{
lblResult.Text = "File not exist!";
txtFileName.Focus();
return false;
} FileStream streamInput = System.IO.File.OpenRead(@txtFileName.Text.Trim());
FileStream streamOutput = System.IO.File.OpenWrite(sTmpFile); int iRowCount = 10;
int.TryParse(txtRowCount.Text.Trim(), out iRowCount); try
{
for (int i = 1; i <= iRowCount; )
{
int result = streamInput.ReadByte();
if (result == 13)
{
i++;
}
if (result == -1)
{
break;
}
streamOutput.WriteByte((byte)result);
}
}
finally
{
streamInput.Dispose();
streamOutput.Dispose();
} string sContent = ReaderFile(sTmpFile);
CopyToClipboard(sContent); return true;
} public static string ReaderFile(string path)
{
string fileData = string.Empty;
try
{ ///读取文件的内容
StreamReader reader = new StreamReader(path, Encoding.Default);
fileData = reader.ReadToEnd();
reader.Close();
}
catch (Exception ex)
{
// throw new Exception(ex.Message,ex);
} ///抛出异常
return fileData;
} private void CopyToClipboard(string sSource)
{
Clipboard.Clear();
if (!string.IsNullOrEmpty(sSource))
{
Clipboard.SetText(sSource);
}
}
C# 读取大文件 (可以读取3GB大小的txt文件)的更多相关文章
- 使用Java将搜狗词库文件(文件后缀为.scel)转为.txt文件
要做一个根据词库进行筛选主要词汇的功能,去搜狗下载专业词汇词库时,发现是.scel文件,且通过转换工具(http://tools.bugscaner.com/sceltotxt/)转换为txt时报错如 ...
- java算法面试题:编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。
package com.swift; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File ...
- [C#]_[使用微软OpenXmlSDK (OpenXmlReader)读取xlsx表格] 读取大数据量100万条数据Excel文件解决方案
1.OpenXmlSDK是个很好的类库,可惜只能通过C#调用,C#的童鞋又福气了. 2.服务端程序由于没法安装office,所以这个对asp.net网站来说是最理想的库了.需要.net 4.0版本 ...
- java 根据Url下载对应的文件到指定位置,读txt文件获取url
package test; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; im ...
- C++文件处理(一):读/写txt文件
C++文件处理与C语言不同,C++文件处理使用的是:流(stream) C++头文件fstream定义了三个类型来支持文件IO
- java直接生成zip压缩文件精简代码(跳过txt文件)
/** * @param args */ public static void main(String[] args) throws Exception{ ZipOutputStream zos = ...
- PHP文件上传 (以上传txt文件为例)
1.前端代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <ti ...
- 编写一个程序, 将 a.txt 文件中的单词与 b.txt 文件中的 单词交替合并到 c.txt 文件中, a.txt 文件中的单词用回车符 分隔, b.txt 文件中用回车或空格进行分隔。
package cn.itcast; import java.io.File; import java.io.FileReader; import java.io.FileWriter; public ...
- 编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔
package sundemo2; import java.io.File; import java.io.FileReader; import java.io.FileWriter; public ...
随机推荐
- 为什么说 C/C++ 不适合做 Web 开发?(成本高,容易出错,apache等工具分担了大部分工作)
因为大家在讨论用C#.Java,做出来的项目的时候,用C++的人们还在讨论语言特性 每种语言都有特定适用范围,对应着某类问题.web开发的重头戏不是计算,而是与用户交互和发送sql语句,当然以脚本语言 ...
- .NET Framework基础知识(二)(转载)
1.课外:为什么object数组可以赋值给object类型,int数组却不能赋值给int类型? 答:因为不管是什么什么数组都继承自Array,而Array又继承自object. 2.线程:是操作系统分 ...
- html5如何实现元素拖放
html5如何实现元素拖放 一.总结 一句话总结:参考文档里面有各种想象不到的好东西.一边允许拖放,一边接收拖放,一边传递数据,一边接收数据.拖放过程还要防止拖放以默认方式(链接)打开. 1.html ...
- AndroidStudio如何配置NDK/JNI开发环境
参考文章: http://www.th7.cn/Program/Android/201509/550864.shtml http://www.open-open.com/lib/view/open14 ...
- [Typescript 2] Nullable Types - Avoiding null and undefined Bugs
For example you have a TS app: enum PaylerPosition { Guard, Forward, Center } interface Player { nam ...
- DDoS ATTACK PROCESSING APPARATUS AND METHOD IN OPENFLOW SWITCH
An OpenFlow switch in an OpenFlow environment includes an attack determination module to collect sta ...
- 关于在方法里面使用泛型public static <T> T
对泛型的理解一直处于模糊的状态,所以今天就专门看了看泛型,看到了如下的一段代码,网上没有找到相应的解释. 然后尝试着自己理解了一下,第一次写博客,手比较生. 现在就开始来写我的理解. 看到这个方法的第 ...
- sql这两个表和查询的组合yii通过使用数据库查询
sql两个表的组合查询 使用 join on 比如:两个表查询: select u.username, t.title from user u join task t on u.id = t.id; ...
- wpf mvvm模式下CommandParameter传递多参
原文:wpf mvvm模式下CommandParameter传递多参 CommandParameter一般只允许设置一次,所以如果要传递多参数,就要稍微处理一下.我暂时还没找到更好的方案,下面介绍的这 ...
- Mybatis自动化生成代码
Mybatis是Java EE中比较主流的一种持久化orm框架,其缺点是不够灵活,需要写的代码较多,包括: 一个sql-map-config.xml 对应每个表的xml文件 对应每个表的实体POJO ...