功能:copy某目錄下的所有的目錄和文件到目的目錄,即創建某文件夾的副本
思路:先copy目錄下的所有文件,再遞歸循環目錄
參數1:要copy的目錄名(原目錄),要是此文件夾不存在會拋出異常
參數2:目的目錄名,要是此文件夾不存在程序會自己建立一個
1 static void directoryCopy(string sourcePath,string destPath)
2 {
3 if ( !Directory.Exists(sourcePath) )
4 {
5 //拋出異常
6 throw new DirectoryNotFoundException("原路徑沒發現");
7 }
8
9 if ( !Directory.Exists(destPath) )
10 {
11 //自己建立一個目的目錄
12 Directory.CreateDirectory(destPath);
13 }
14
15 DirectoryInfo dir=new DirectoryInfo(sourcePath);
16 DirectoryInfo[] dirs= dir.GetDirectories();
17
18 //先拷貝該目錄下的所有文件
19 copyFile(dir,destPath);
20
21 if ( dirs.Length>0 )
22 {
23 foreach(DirectoryInfo temDirectoryInfo in dirs)
24 {
25 string sourceDirectoryFullName=temDirectoryInfo.FullName;
26 string destDirectoryFullName=sourceDirectoryFullName.Replace(sourcePath,destPath);
27
28 if ( !Directory.Exists( destDirectoryFullName ) )
29 {
30 Directory.CreateDirectory( destDirectoryFullName );
31 }
32
33 //拷貝temDirectoryInfo下的所有文件
34 copyFile(temDirectoryInfo,destDirectoryFullName);
35
36 //遞歸,訪問下一級目錄
37 directoryCopy( sourceDirectoryFullName,destDirectoryFullName );
38 }
39 }
40 }
2 {
3 if ( !Directory.Exists(sourcePath) )
4 {
5 //拋出異常
6 throw new DirectoryNotFoundException("原路徑沒發現");
7 }
8
9 if ( !Directory.Exists(destPath) )
10 {
11 //自己建立一個目的目錄
12 Directory.CreateDirectory(destPath);
13 }
14
15 DirectoryInfo dir=new DirectoryInfo(sourcePath);
16 DirectoryInfo[] dirs= dir.GetDirectories();
17
18 //先拷貝該目錄下的所有文件
19 copyFile(dir,destPath);
20
21 if ( dirs.Length>0 )
22 {
23 foreach(DirectoryInfo temDirectoryInfo in dirs)
24 {
25 string sourceDirectoryFullName=temDirectoryInfo.FullName;
26 string destDirectoryFullName=sourceDirectoryFullName.Replace(sourcePath,destPath);
27
28 if ( !Directory.Exists( destDirectoryFullName ) )
29 {
30 Directory.CreateDirectory( destDirectoryFullName );
31 }
32
33 //拷貝temDirectoryInfo下的所有文件
34 copyFile(temDirectoryInfo,destDirectoryFullName);
35
36 //遞歸,訪問下一級目錄
37 directoryCopy( sourceDirectoryFullName,destDirectoryFullName );
38 }
39 }
40 }
方法2:
功能:copy某目錄下的所有文件
先得到原目錄下的所有文件信息數組,再利用循環依次copy
參數1:要copy的目錄(原目錄)
參數2:目的目錄名稱
1 static void copyFile(DirectoryInfo path,string destPath)
2 {
3 string sourcePath=path.FullName;
4
5 FileInfo[] files=path.GetFiles();
6
7 foreach(FileInfo file in files)
8 {
9 //要copy的原文件全名
10 string sourceFileFullName=file.FullName;
11 //目的文件的全名
12 string destFileFullName=sourceFileFullName.Replace(sourcePath,destPath);
13 //開始copy文件
14 file.CopyTo( destFileFullName ,true);
15 }
16 }
2 {
3 string sourcePath=path.FullName;
4
5 FileInfo[] files=path.GetFiles();
6
7 foreach(FileInfo file in files)
8 {
9 //要copy的原文件全名
10 string sourceFileFullName=file.FullName;
11 //目的文件的全名
12 string destFileFullName=sourceFileFullName.Replace(sourcePath,destPath);
13 //開始copy文件
14 file.CopyTo( destFileFullName ,true);
15 }
16 }
調用
directoryCopy(@"E:\Pc Drive",@"c:\tem\Pc Drive");
實現E:\Pc Drive目錄中的數據備份