如何用C#实现文件及文件夹复制,且显示复制的进度条

maojl 2003-09-16 09:46:58
如何用C#实现文件及文件夹的复制,并且要求显示出复制的进度条???
...全文
952 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
test234 2004-03-20
  • 打赏
  • 举报
回复
gz
Rossetti 2003-09-22
  • 打赏
  • 举报
回复
gz
maojl 2003-09-22
  • 打赏
  • 举报
回复
在复制文件时怎么实现查看自己的磁盘空间
TCOK 2003-09-19
  • 打赏
  • 举报
回复
对啊,多花时间去看看你的MSDN……会有绝多好冬冬的,实在找不到……建议买新版本的MSDN for VS.net 2003
snewxf 2003-09-19
  • 打赏
  • 举报
回复
大哥!MSDN呀!你别告诉我你没装VS 2003 或是VS 2002呀!
maojl 2003-09-18
  • 打赏
  • 举报
回复
请问上面的回复的是个什么东东啊?我怎么找不到?
snewxf 2003-09-17
  • 打赏
  • 举报
回复
晕!
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemWindowsFormsProgressBarClassIncrementTopic.htm
reludson 2003-09-17
  • 打赏
  • 举报
回复
private int dirCopy(string dirFrom,string dirTo)
{
if(!Directory.Exists(dirFrom)) throw(new Exception(dirFrom+" not exists"));
if(Directory.Exists(dirTo)) throw(new Exception(dirTo+" exists"));
Directory.CreateDirectory(dirTo);
try{
foreach(string f in Directory.GetFiles(dirFrom)){
  File.Copy(f,dirTo+"\\"+Path.GetFileName(f));
}
foreach(string d in Directory.GetDirectories(dirFrom)){
dirCopy(d,dirTo+"\\"+Path.GetFileName(d));
}
return 0;
}
catch(Exception){ return -1;}      
}

xixigongzhu 2003-09-17
  • 打赏
  • 举报
回复
Copy不能是static,应该将static去掉。
xixigongzhu 2003-09-17
  • 打赏
  • 举报
回复
先求出文件和目录的数目:
static int Count(String src) {
int count = 1;
String[] sub = Directory.GetDirectories(src);
for (int i = 0; i < sub.Length; i++) {
count += Count(sub[i]);
}
String[] files = Directory.GetFiles(src);
count += files.Length;
return count;
}
设置ProgressBar属性Maximum为上面求出的数目,然后复制:
static void Copy(String src, String dest) {
try{
Directory.CreateDirectory(dest);
String[] sub = Directory.GetDirectories(src);
for (int i = 0; i < sub.Length; i++) {
String name = Path.GetFileName(sub[i]);
Copy(sub[i], dest + "\\" + name);
}
String[] files = Directory.GetFiles(src);
for (int i = 0; i < files.Length; i++) {
String name = Path.GetFileName(files[i]);
File.Copy(files[i], dest + "\\" + name);
}
progressBar1.Increment(files.Length + 1);//progressBar1是进度条。
}catch(Exception e){
Console.WriteLine(e);
}
}
maojl 2003-09-17
  • 打赏
  • 举报
回复
设置文件进度条,能否更详细些?谢谢!
snewxf 2003-09-16
  • 打赏
  • 举报
回复
设置控制条参看:
ProgressBar.Increment 方法
public void Increment(
int value
);
dahuzizyd 2003-09-16
  • 打赏
  • 举报
回复
拷贝文件夹:
static public void CopyDirectory(string SourceDirectory, string TargetDirectory)
{
DirectoryInfo source = new DirectoryInfo(SourceDirectory);
DirectoryInfo target = new DirectoryInfo(TargetDirectory);

//Check If we have valid source
if(!source.Exists)
return;

if(!target.Exists)
target.Create();

//Copy Files
FileInfo[] sourceFiles = source.GetFiles();
for(int i = 0; i < sourceFiles.Length; ++i)
File.Copy(sourceFiles[i].FullName, target.FullName + "\\" + sourceFiles[i].Name,true);

//Copy directories
DirectoryInfo[] sourceDirectories = source.GetDirectories();
for(int j = 0; j < sourceDirectories.Length; ++j)
CopyDirectory(sourceDirectories[j].FullName,target.FullName +"\\" + sourceDirectories
}

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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