c# 复制文件夹! 进度条

c# 复制文件夹! 进度条,第1张

你说的,应该是那种离散型的数据,一点点增加的,

比如一共有100个,每次拷贝完一个文件夹,增加1,直到100.

这样的方式,对应的是通过把ProgressBarStyle,设置为Blocks,

然后每拷贝完一个文件夹,去调用回调函数,增加1,即可。

相关的类似的代码,可以参考我的:

【未解决】C#中添加始终滚动的进度条(跑马灯)和一格一格前进的滚动条(块)

【已解决】给C#程序添加滚动进度条(ProgressBar),实现滚动/动态更新

然后照葫芦画瓢,就可以实现自己的了。

其中,可以去网上搜一下ProgressBarStyle,可以找到更多的微软的官方的解释的。

这里不给贴地址,你自己去google中搜吧。

(此处不给贴地址,请自行去google中搜上述标题,即可找到相关帖子的地址)

获取文件总的大小

定时获取已复制文件的大小

得到百分比,显示成进度

FileStream fs

...

//获取fs的长度

long maxLength = fs.Length

异步调用fs,

fs.BeginWrite(..)

//声明一个全局累加的long

//在CallBack函数中每次累加,同时使用delegate响应主界面线程

如下是一个将c:\windows复制到该批处理所在目录并显示进度的批处理例子,你可以根据你的需要来修改。你想显示百分比的话还是比较麻烦的,这个取决于文件大小而不是文件多少,文件大小在批处理下显示不出百分比的,但是文件个数却是可以的。

@echo off

setlocal enabledelayedexpansion

set b=/-\ /-\ **

set 速度=1

set 退格=

set n=0

for %%i in (%SystemRoot%\*.*) do (call :a !n!&copy %%i>nul 2>nul&set /a n+=1)

goto :eof

:a

set/a a=%1%%10

set/a c=%a%%%4

if %a% EQU 0 set/p=▌<nul

if %c% EQU 3 (set/p=^|<nul) else (set/p=!b:~%a%,1!<nul)

ping/n %速度% 127.1>nul

set/p=%退格%<nul

goto :eof


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11699003.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存