首页新闻找找看学习计划

FileStream.Read返回值问题

0
悬赏园豆:20 [待解决问题]

using(FileStream readStream = new FileStream(txtOrgFilePath.Text,FileMode.Open))
{
using(FileStream writeStream = new FileStream (txtFinalFilePath.Text,FileMode.Create))
{
byte[] bytes = new byte[1024 * 1024 * 8];
int readBytes;
while ((readBytes = readStream.Read(bytes, 0, bytes.Length)) > 0)
{
writeStream.Write(bytes, 0, readBytes);
}

//while ((readStream.Read(bytes, 0, bytes.Length)) > 0)
//{
// writeStream.Write(bytes, 0, readStream.Read(bytes, 0, bytes.Length));
//}
}
}

 

 

我只是将第一个里面事先声明的readBytes的位子全部用readStream.Read(bytes, 0, bytes.Length)代替了 结果流出来的文件却打不开了是怎么回事??  而且文件明显变小。。。不替换是可以得出正常结果的。。。

Tjd的主页 Tjd | 初学一级 | 园豆:189
提问于:2014-03-15 21:09
< >
分享
所有回答(2)
0

Write(bytes, 0, readBytes);第一次是从0开始的 第二次还从0开始吗?? 

wolfy | 园豆:2636 (老鸟四级) | 2014-03-16 12:41

没注释的是对的代码,0每次会自动向后偏移

支持(0) 反对(0) Tjd | 园豆:189 (初学一级) | 2014-03-16 12:53

@Tjd: 

using(FileStream writeStream = new FileStream (txtFinalFilePath.Text,FileMode.Create))

这个FileMode是否得采用FileMode.Append

create是否会覆盖之前写入的?应该是追加的方式去写

你可以试一下 希望能帮到你

支持(0) 反对(0) wolfy | 园豆:2636 (老鸟四级) | 2014-03-17 12:47

@wolfy: http://www.cnblogs.com/wolf-sun/p/3345392.html可以参考这篇文章 我之前做过大文件复制的一个例子

支持(0) 反对(0) wolfy | 园豆:2636 (老鸟四级) | 2014-03-17 12:49
0

你注释的代码的意思是每写一次要读2次,也就是一次读的数据会被忽略。。。这样当然有问题,文件至少少1半以上

56180825 | 园豆:1128 (小虾三级) | 2014-03-16 20:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册