一小段程序, 关于二进制读取的, 请大家来看看, 诸多疑问
这是我写的复制文件的最简单例子.
我想知道有没有更好的实现方法?
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) //将现有文件复制到新文件。不允许改写同名的文件。
------解决方案--------------------晕倒,不停地开辟新的缓冲区,那与不用缓冲区一次性读到内存与何区别?
即使你内存非常大,也会用到虚存的,效率极低~