当前位置: 代码迷 >> C# >> 多媒体文件的复制有关问题
  详细解决方案

多媒体文件的复制有关问题

热度:80   发布时间:2016-05-05 04:48:09.0
多媒体文件的复制问题
本帖最后由 romfan123456 于 2015-02-08 19:45:16 编辑
学到如下复制多媒体方法:

           //设置文件路径
            string pathOld = @"i:\1.wav";
            string pathNew = @"i:\77.wav";
             //先读取
            byte[] buff = File.ReadAllBytes(pathOld);
            //再写入            
            File.WriteAllBytes(pathNew, buff );
           //结束     

后来有人给一部分这样代码

byte[] buffer=new byte[1024*1024*5];
 while (true)
 {
           File.WriteAllBytes(pathNew, buffer);
 }

看不懂呀。完整代码是什么呀,这样做好处是什么?
而且buffer数组固定大小,如果文件很大呢,放不下呢?
虽然循环了,但是buffer能一直接上面的头吗?‘
求解
------解决思路----------------------
只需要复制的话用File.Copy吧
------解决思路----------------------
引用
   byte[] buff = File.ReadAllBytes(pathOld);

这种方法是错误的。如果你的文件有1G,那么这句话会把1G都读到内存里。

第二种方法思路是对的,一点一点的读,再一点一点的写。但是代码不完整,while里面得有读取源文件的代码,每次读取5KB到byte数组,再写到目的段文件。还缺跳出语句。

最好的办法,就是用楼上说的,file.copy, 省事省心。
------解决思路----------------------
直接用File.Copy就可以了。
------解决思路----------------------
File.Copy是简单,不过没法监控过程吧,万一用户觉得太慢,不想等了,想取消呢,还得关闭程序重来?
而且复制了多少了也不知道,都在后台
简单的用File.Copy,那不如让用户自己上磁盘里操作得了,还弄个软件干啥
------解决思路----------------------
引用:
File.Copy是简单,不过没法监控过程吧,万一用户觉得太慢,不想等了,想取消呢,还得关闭程序重来?
而且复制了多少了也不知道,都在后台
简单的用File.Copy,那不如让用户自己上磁盘里操作得了,还弄个软件干啥


这个时候可以考虑用CopyFileEx。
  相关解决方案