高手请入,文件复制与进度条的问题

mint 2006-03-21 11:00:57
我需要将一个目录复制到另一目录的同时显示进度条.多线程进度条本身实现很容易,难就难在需要在递归的处理的同时了解进度条应当增加多少.
我如何才能大约知道文件复制到什么地方了呢?请大家给点思路
...全文
236 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
copico 2006-03-22
  • 打赏
  • 举报
回复
随时计算已经拷贝了多少
你把时间弄小点,用另一个线程处理
真相重于对错 2006-03-22
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/4630/4630572.xml?temp=.5915644
youlinga 2006-03-22
  • 打赏
  • 举报
回复
好象没有精确的显示 误差总有
aSalt 2006-03-22
  • 打赏
  • 举报
回复
vb.net一样,需要改一下语法,SORRY,忘了这里是VB.NET了

dim sw as System.io.fileStream
sw = New System.IO.FileStream ("c:\\copy.exe",System.IO.FileMode.CreateNew,System.IO.FileAccess.Write))
Dim sr as System.IO.FileStream
sr = New System.IO.FileStream ("c:\\test2.exe",System.IO.FileMode.Open ,System.IO.FileAccess.Read))

Do while(sr.Read(buff,0,buff.length)>0)
procressBar.value +=1
sw.Write (buff,0,buff.Length)
Loop

sr.Close()
sw.Close()
aSalt 2006-03-22
  • 打赏
  • 举报
回复
这个你得自己读写文件,用System.IO.File.Copy等下面的方法计算不到

{先得到文件总容量, 然后除以100或1000(如果文件比想象中大),得到缓存大小
打开文件
在循环中,没读写一次,就给滚动条加一,procressBar.value +=1;
关闭文件}
{}花括号里的内容放到一个独立于主线程的线程里就可以了,不需要过多的线程,主要为了防止程序"假死"

文件复制参考:
缓存大小根据文件大小,滚动条大小相互换算一下
byte [] buff = new byte [1024];
using (System.IO.FileStream sw = new System.IO.FileStream ("c:\\copy.exe",System.IO.FileMode.CreateNew,System.IO.FileAccess.Write))
using (System.IO.FileStream sr= new System.IO.FileStream ("c:\\test2.exe",System.IO.FileMode.Open ,System.IO.FileAccess.Read))
while (sr.Read (buff,0,buff.Length)>0)
{
procressBar.value +=1; //这里滚动,前提都初始化好了
sw.Write (buff,0,buff.Length);
}

16,552

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧