社区
C#
帖子详情
streamreader outofmemory
john51200
2011-12-13 09:55:11
我在调用streamreader.readtoend()读一个有四百多K的文件时,程序报System.OutOfMemoryException异常,请问各位大侠怎样处理?
...全文
82
3
打赏
收藏
streamreader outofmemory
我在调用streamreader.readtoend()读一个有四百多K的文件时,程序报System.OutOfMemoryException异常,请问各位大侠怎样处理?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
john51200
2011-12-13
打赏
举报
回复
找到了不是缺少命名空间引用是少了一个类
public class FileBlockSteamReaderEventArgs : EventArgs
{
private int readPercent;
public int ReadPercent
{
get { return readPercent; }
set { readPercent = value; }
}
}
添加在上面的#endregion之前就好了
john51200
2011-12-13
打赏
举报
回复
FileBlockSteamReaderEventArgs属于哪个命名空间的?
hefeng_aspnet
2011-12-13
打赏
举报
回复
写一个大文件读取类
public class FileSplitSteamReader : FileStream
{
#region //文件分块读
/// <summary>
/// 用于普通文件读取
/// </summary>
/// <param name="sourceFileName">文件的路径</param>
public FileSplitSteamReader(string sourceFileName)
: base(sourceFileName, FileMode.Open, FileAccess.Read)
{
this.sourceFileName = sourceFileName;
}
/// <summary>
/// 用于大文件读取
/// </summary>
/// <param name="sourceFileName">文件的路径</param>
/// <param name="splitSize">切分大小</param>
public FileSplitSteamReader(string sourceFileName, int splitSize)
: base(sourceFileName, FileMode.Open, FileAccess.Read)
{
this.sourceFileName = sourceFileName;
this.splitSize = splitSize;
}
private string sourceFileName;
/// <summary>
/// 获取文件的路径
/// </summary>
public string SourceFileName
{
get { return sourceFileName; }
}
private long splitSize;
/// <summary>
/// 每次切分文件大小splitSize
/// </summary>
public long SplitSize
{
get { return splitSize; }
}
/// <summary>
/// 文件的大小
/// </summary>
public long FileSize
{
get { return this.Length; }
}
private long readTimes = 1;
/// <summary>
/// 当前读取次数块号
/// </summary>
public long ReadTimes
{
get { return readTimes; }
}
private bool judge = false;
/// <summary>
/// 用于判断是否执行到最后一块.读完为ture,未读完为false.
/// </summary>
public bool Judge
{
get { return judge; }
set { judge = value; }
}
/// <summary>
/// 最后一次读取文件的大小
/// </summary>
public long FinilReadSize
{
get
{
if (splitSize == 0)
return 1024 * 1024 * 3;
else
return this.FileSize - (this.FileSize / (long)this.splitSize) * (long)this.splitSize;
}
}
public int CurrentReadSize;
/// <summary>
/// 开始读取文件
/// </summary>
/// <returns>以Bitmap类型返回每次读取文件的内容</returns>
public byte[] SpliteRead()
{
FileBlockSteamReaderEventArgs Fbsr = new FileBlockSteamReaderEventArgs();
byte[] timeReadContect;
this.Seek(splitSize * (readTimes - 1), SeekOrigin.Begin);
if (readTimes < (this.FileSize / this.splitSize + 1))
{
Fbsr.ReadPercent = (int)(((float)this.Position / this.FileSize) * 100);
timeReadContect = new byte[this.splitSize];
}
else
{
timeReadContect = new byte[this.FinilReadSize];
judge = true;
Fbsr.ReadPercent = 100;
}
CurrentReadSize = timeReadContect.Length;
this.Read(timeReadContect, 0, timeReadContect.Length);
FileABlockReadEndEvent(Fbsr);
readTimes++;
return timeReadContect;
}
public event EventHandler<FileBlockSteamReaderEventArgs> ABlockReadEndEvent;
public event EventHandler FinishAllReadEvent;
/// <summary>
/// 文件读取完当前块当前事件
/// </summary>
/// <param name="e"></param>
public void FileABlockReadEndEvent(FileBlockSteamReaderEventArgs e)
{
if (ABlockReadEndEvent != null)
{
this.ABlockReadEndEvent(this, e);
}
}
/// <summary>
/// 文件读取完最后一块的事件
/// </summary>
public void FileFinishAllReadEvent()
{
if (FinishAllReadEvent != null)
{
this.FinishAllReadEvent(this, new EventArgs());
}
}
#endregion
}
然后,再这么写,我直接用你的东西了
Common.FileSplitSteamReader filestream = new Common.FileSplitSteamReader(str_file,1000);//1000是我自己设定的每次分割的大小,你自己可以随意设定这个值
if (File.Exists(str_file))
bytedata = filestream.SpliteRead();
else
{
return;
}
try
{
bytedata.Initialize();
string strdata = Encoding.ASCII.GetString(bytedata);
}
catch
{ }
C# 温故而知新:stream篇
1.1 什么是Stream? 1.2 什么是字节序列? 1.3 Stream的构造函数 1.4 Stream的重要属性及方法 1.5 Stream的示例 1.6 Stream异步读写 1.7 Stream 和其子类的类图 2.1 为什么要介绍 TextReader? 2.2 TextReader的常用属性和方法 2.3 TextReader 示例 2.4 从
StreamReader
想到多态 2.5 简单介绍下Encoding 编码 2.6
StreamReader
的定义及作用 2.7
StreamReader
类的常用方法属性 2.8
StreamReader
示例 3.1 为何介绍TextWriter? 3.2 TextWriter的构造,常用属性和方法 3.3 IFormatProvider的简单介绍 3.4 如何理解StreamWriter? 3.5 StreamWriter属性 3.6 StreamWriter示例 4.1 如何去理解FileStream? 4.2 FileStream的重要性 4.3 FileStream常用构造函数(重要) 4.4 非托管参数SafeFileHandle简单介绍 4.5 FileStream常用属性介绍 4.6 FileStream常用方法介绍 4.7 FileStream示例1:*文件的新建和拷贝(主要演示文件同步和异步操作) 4.8 FileStream示例2:*实现文件本地分段上传 5.1 简单介绍一下
Memory
Stream 5.2
Memory
Stream和FileStream的区别 5.3 通过部分源码深入了解下
Memory
Stream 5.4 分析
Memory
Steam最常见的
OutO
f
Memory
异常 5.5
Memory
Stream 的构造 5.6
Memory
Stream 的属性 5.7
Memory
Stream 的方法 5.8
Memory
Stream 简单示例 : XmlWriter中使用
Memory
Stream 5.9
Memory
Stream 简单示例 :自定义一个处理图片的HttpHandler 6.1 简单介绍一下BufferedStream 6.2 如何理解缓冲区? 6.3 BufferedStream的优势 6.4 从BufferedStream 中学习装饰模式 6.5 如何理解装饰模式 6.6 再次理解下装饰模式在Stream中的作用 6.7 BufferedStream的构造 6.8 BufferedStream的属性 6.9 BufferedStream的方法 6.10 简单示例:利用socket 读取网页并保存在本地 7.1 NetworkStream的作用 7.2 简单介绍下TCP/IP 协议和相关层次 7.3 简单说明下 TCP和UDP的区别 7.4 简单介绍下套接字(Socket)的概念 7.5 简单介绍下TcpClient,TcpListener,IPEndPoint类的作用 7.6 使用NetworkStream的注意事项和局限性 7.7 NetworkStream的构造 7.8 NetworkStream的属性 7.9 NetworkStream的方法 7.10 NetwrokStream的简单示例 7.11 创建一个客户端向服务端传输图片的小示例 版权归作者所有,仅供学习参考
C# 读取大文本出现System.
OutO
f
Memory
Exception,两种解决方案
问题:读取一个444M的文本文件,出现内存溢出 方案1:利用FileStream将数据读取到byte数组中,然后按区间遍历该byte数组; 优缺点:速度快,占系统内存 可能出现的问题:一个汉字是两个字节,按区间读取转换成字符串,就有可能把一个汉字拆成两半,导致乱码; 解决思路:获取区间数组中最后一个换行符(\n的byte字节),以此为分界点,该换行符以后的数据,留给下一个区间来组装; 代码: /// <summary> /// 通过给定的文件流,判断文件的编码类型 /// &.
分析性能瓶颈 — 调试
OutO
f
Memory
Exception
在前面的文章里面,执行性能测试—起步里,讲了执行性能测试的基本步骤,而且在前面的例子里面,通过一个2M多的文本文件,对比了冒泡排序和快速排序的性能之间的差别。但是当我使用一个700M大小的文本文件进行测试的时候—因为我需要了解在极端情况下两种排序方法的差别。原定是2G的文本文件,但是无论快排还是冒泡排序都要求被排序的数据完全存在于内存当中,对于32位机,...
如何处理
OutO
f
Memory
Exception异常 ?
今天在浏览CSDN的网站,出现了上图的错误,如果没有记错的话,这两个错误我经常都能碰到,在这里我不想说CSDN现在如何失去人心的大话题,而是想和大家探讨如何解决这两个问题(这里只考虑web app),以便在自己的系统中避免这种不友好,甚至会"吓坏"客户的界面的出现 一,运行时错误 首先程序的异常,甚至错误是在所难免的,但当系统出现异常时,应该提供给用户一个友 好的界面,并简单说明原因,对这个
C#打开tif文件时内存溢出(System.
OutO
f
Memory
Exception)解决办法
前言 原创性声明 此博文的出处 为 http://blog.csdn.net/zhujunxxxxx/article/details/39251353如果进行转载请注明出处。本文作者原创,邮箱zhujunxxxxx@163.com,如有问题请联系作者 我在做一个统计图片长和宽的软件时遇到一个问题,本来是用的 Image img = null; img
C#
111,119
社区成员
642,545
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章