C#中的FileStream.Read函数问题

happyie 2008-11-18 10:52:47
FileStream.Read(byte[] array, int offset, int count)
我要读的文件大小超过2G,已经超出了int count的范围,我该怎么做,才能得到array数据啊
...全文
1038 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
卧_槽 2008-11-18
  • 打赏
  • 举报
回复
+
happyie 2008-11-18
  • 打赏
  • 举报
回复
还有就是两个byte[]合并,用什么方法可以实现?
happyie 2008-11-18
  • 打赏
  • 举报
回复
分段读取做MD4,然后合并?怎么做啊?
  • 打赏
  • 举报
回复
对2个G的数据MD4??
呵呵,分段读取做MD4,然后合并应该可以的,你的目的是签名而已。
长沙三毛 2008-11-18
  • 打赏
  • 举报
回复
1)Read和BeginRead方法中,Offset必须指定的,因此int Offset似乎不能读2G以上的文件
2)本人也不清楚这种情况:第一读Offset = 0,第二次读时,Offset是否还可以设置为0?因为读文件数据后指针移动了。如果可以,则使用前面介绍的分段读,但不能异步实现。
3)如果2)不行,则只有使用ReadByte()了
4)在.NET 3.0/3.5下不知有改进否?
anheizhizi 2008-11-18
  • 打赏
  • 举报
回复
循环读取写入
happyie 2008-11-18
  • 打赏
  • 举报
回复
我的目的是计算文件MD4值,我需要一个总得array,分段的没有用的,本来我想把数据存到其他数组去,用Buffer.BlockCopy,但是count也是int型,不够的.

还有问下能不能先计算分段MD4值,然后再合并啊,可以的话,怎么处理的?
  • 打赏
  • 举报
回复
FileStream stream = new FileStream(path);
byte[] writeData = new byte[8192];
// Use the ReadAllBytesFromStream to read the stream.
while (true)
{
int size = stream.Read(writeData, 0, writeData.Length);
if (size > 0)
{
//你操作数据的代码
}
else
{
break;
}
}
stream.Close();
  • 打赏
  • 举报
回复
循环读取啊,byte[]可以定义为1024或者2049等等,不要超过int的maxvalue就可以。
然后取出来操作完再去取。

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧