原文: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);
}
}

最新文章

  1. TFS 掩蔽或取消掩蔽工作区中的文件夹
  2. Linux 命令快捷键
  3. Kanzi编程基础2 - Kanzi节点读取和属性设置
  4. 关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案
  5. Requirejs加载超时问题的一个解决方法:设置waitSeconds=0
  6. Catch That Cow(poj 3278)
  7. Oracle sqlldr使用示例
  8. CSS Sprites图片处理
  9. Bone Collector------HDOJ杭电2602(纯01背包问题!!!!!!具体解释!)
  10. python 之 Paramiko学习
  11. DataGuard failover dg role自动切换模式测试
  12. asp.net分页代码(教你怎么实现)
  13. POJ3208 Apocalypse Someday
  14. oracle填坑之PLSQL中文显示为问号
  15. 前端性能优化成神之路--SSR(服务端渲染)
  16. 【CF280D】 k-Maximum Subsequence Sum ,线段树模拟费用流
  17. LeetCode(169. 求众数)
  18. Redis学习系列七分布式锁
  19. PHP微信支付开发
  20. React-navigation物理返回键提示效果BackHandler

热门文章

  1. 【u011】乘法难题
  2. 使用搜狐Sendcloud的Webapi发送邮件:Jodd和Apache Httpclient
  3. 【t058】拜年
  4. html5中input的type类型有哪些(总结)
  5. 利用for循环的嵌套输出图形--课后作业
  6. 【Qt程序】基于Qt词典开发系列&amp;lt;十二&amp;gt;呼叫讲述
  7. ios 即时通讯开源IM,LeanCloud、融云、环信
  8. scala 通过apply创建类的对象
  9. 【24.58%】【BZOJ 1001】狼抓兔子
  10. .net程序运行流程