/// <要約>
///フォルダを作成します
/// </要約>
/// <PARAM NAME = "ソースパス">オリジナルパス</ param>の
/// <返しA> </返す>
のpublic static BOOLのCREATEFOLDER (文字列ソースパス)
{
試み
{
Directory.CreateDirectory(ソースパス)は、
; trueに戻す
}
キャッチ
{
;偽に戻り
}
}
/// <まとめ>
[を通してループ]フォルダをコピー///
/// </要約>
/// <PARAM NAME = "ソースパス" > </ param>の元の経路
/// <PARAM NAME = "DestinPath">パスにヘッド</ PARAM>
/// <戻り値> </戻り>
パブリック静的BOOL CopyFolder( sourcePathは文字、文字列DestinPath)
{
IF(Directory.Exists(sourcePathは))
{
CREATEFOLDER(DestinPath); //最初のディレクトリフォルダで作成
列sourcePathは= sourcePathは; // [変更]元のパス
文字列destinPath = DestinPath。 // [変更]宛先パス
キュー<ストリング>ソース=新しいキューの<string>(); // 元のフォルダパス保存
キュー<ストリング>デス=新しいキュー <ストリング>();//する先のフォルダパスを保存
IsHasChildFolder = trueをBOOL; //そこにサブフォルダ場合
ストリングtempDestinPath = String.Emptyを; //一時的にヘッドは、デスティンに格納される
一方(IsHasChildFolder)
{
文字列[] =のDirectory.GetFileSystemEntriesのfileList(sourcePathは); //を含むファイルであるソースディレクトリ内のファイルのリストを取得しますアレイおよびディレクトリ・パス
のために(0 = I int型、iは fileList.Lengthを<; iは++)// すべてのファイルとディレクトリを反復
{
tempDestinPath = destinPath + "\\" + Path.GetFileName(のfileList [I]); / /サブファイルパスを取得する
(Directory.Exists(のfileList [i]の場合 ))// がフォルダ
{
//現在の元のパスキューサブディレクトリに、source.Enqueue(のfileList [I])
destin.Enqueue(tempDestinPath); //サブディレクトリキューへの電流経路にヘッド
CREATEFOLDER(tempDestinPath); //サブフォルダを作成
}
他//ファイルが存在
{
(trueに、のfileList [I]、tempDestinPath)File.Copy ; //コピーファイルを
}
}
(source.Count> == 0 && source.Count destin.Countは)//サブフォルダが存在する場合
、{
sourcePathはsource.Dequeue =();
destinPath destin.Dequeue =を();
}
そう
{
IsHasChildFolder = FALSE;
}
}
trueを返します。
}
他
{
falseを返します。
}
}
///フォルダを作成します
/// </要約>
/// <PARAM NAME = "ソースパス">オリジナルパス</ param>の
/// <返しA> </返す>
のpublic static BOOLのCREATEFOLDER (文字列ソースパス)
{
試み
{
Directory.CreateDirectory(ソースパス)は、
; trueに戻す
}
キャッチ
{
;偽に戻り
}
}
/// <まとめ>
[を通してループ]フォルダをコピー///
/// </要約>
/// <PARAM NAME = "ソースパス" > </ param>の元の経路
/// <PARAM NAME = "DestinPath">パスにヘッド</ PARAM>
/// <戻り値> </戻り>
パブリック静的BOOL CopyFolder( sourcePathは文字、文字列DestinPath)
{
IF(Directory.Exists(sourcePathは))
{
CREATEFOLDER(DestinPath); //最初のディレクトリフォルダで作成
列sourcePathは= sourcePathは; // [変更]元のパス
文字列destinPath = DestinPath。 // [変更]宛先パス
キュー<ストリング>ソース=新しいキューの<string>(); // 元のフォルダパス保存
キュー<ストリング>デス=新しいキュー <ストリング>();//する先のフォルダパスを保存
IsHasChildFolder = trueをBOOL; //そこにサブフォルダ場合
ストリングtempDestinPath = String.Emptyを; //一時的にヘッドは、デスティンに格納される
一方(IsHasChildFolder)
{
文字列[] =のDirectory.GetFileSystemEntriesのfileList(sourcePathは); //を含むファイルであるソースディレクトリ内のファイルのリストを取得しますアレイおよびディレクトリ・パス
のために(0 = I int型、iは fileList.Lengthを<; iは++)// すべてのファイルとディレクトリを反復
{
tempDestinPath = destinPath + "\\" + Path.GetFileName(のfileList [I]); / /サブファイルパスを取得する
(Directory.Exists(のfileList [i]の場合 ))// がフォルダ
{
//現在の元のパスキューサブディレクトリに、source.Enqueue(のfileList [I])
destin.Enqueue(tempDestinPath); //サブディレクトリキューへの電流経路にヘッド
CREATEFOLDER(tempDestinPath); //サブフォルダを作成
}
他//ファイルが存在
{
(trueに、のfileList [I]、tempDestinPath)File.Copy ; //コピーファイルを
}
}
(source.Count> == 0 && source.Count destin.Countは)//サブフォルダが存在する場合
、{
sourcePathはsource.Dequeue =();
destinPath destin.Dequeue =を();
}
そう
{
IsHasChildFolder = FALSE;
}
}
trueを返します。
}
他
{
falseを返します。
}
}
ます。https://my.oschina.net/secyaher/blog/274051で再現