拷贝文件夹:
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
}
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
}
ProgressBar.Increment 方法
public void Increment(
int value
);
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);
}
}
{
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;}
}
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemWindowsFormsProgressBarClassIncrementTopic.htm