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)代替了 结果流出来的文件却打不开了是怎么回事?? 而且文件明显变小。。。不替换是可以得出正常结果的。。。
Write(bytes, 0, readBytes);第一次是从0开始的 第二次还从0开始吗??
没注释的是对的代码,0每次会自动向后偏移
@Tjd:
using(FileStream writeStream = new FileStream (txtFinalFilePath.Text,FileMode.Create))
这个FileMode是否得采用FileMode.Append
create是否会覆盖之前写入的?应该是追加的方式去写
你可以试一下 希望能帮到你
@wolfy: http://www.cnblogs.com/wolf-sun/p/3345392.html可以参考这篇文章 我之前做过大文件复制的一个例子
你注释的代码的意思是每写一次要读2次,也就是一次读的数据会被忽略。。。这样当然有问题,文件至少少1半以上