读书人

一小段程序, 关于二进制读取的, 请大家

发布时间: 2012-01-09 21:05:42 作者: rapoo

一小段程序, 关于二进制读取的, 请大家来看看, 诸多疑问
这是我写的复制文件的最简单例子.

我想知道有没有更好的实现方法?

FileStream fs = new FileStream("f:\\aa.bin", FileMode.Open);
List<byte[]> total = new List<byte[]>();

int length = 0;

const int BUFFERSIZE = 1024;
int offset = 0;

int timesToRead = (int)Math.Ceiling(Convert.ToDouble(fs.Length)/Convert.ToDouble(BUFFERSIZE));

for(int i = 0; i <timesToRead; i++)
{
byte[] bytes = new byte[BUFFERSIZE];
length = fs.Read(bytes, offset, BUFFERSIZE);
total.Add(bytes);
}

fs.Close();

FileStream wfs = new FileStream("f:\\bb.bin", FileMode.OpenOrCreate);

for (int i = 0; i < timesToRead; i++ )
{
if (i == timesToRead - 1) //这句写的不好, 不知有什么更好的方法吗
{
wfs.Write(total[i], 0, length);
}
else
{
wfs.Write(total[i], 0, total[i].Length);
}
}

wfs.Close();

谢谢啦

[解决办法]
System.IO.File.Copy (String, String) //将现有文件复制到新文件。不允许改写同名的文件。
[解决办法]
晕倒,不停地开辟新的缓冲区,那与不用缓冲区一次性读到内存与何区别?
即使你内存非常大,也会用到虚存的,效率极低~

读书人网 >C#

热点推荐