最近工作需要得寫一個目錄數據備份的實現
我寫了2個靜態方法.
方法1:
功能: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目錄中的數據備份