最近工作需要得寫一個目錄數據備份的實現
我寫了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:功能: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
}
調用directoryCopy(@"E:\Pc Drive",@"c:\tem\Pc Drive");實現E:\Pc Drive目錄中的數據備份
转载于:https://www.cnblogs.com/ljChen/archive/2005/11/19/280442.html