VB.NET Tips - フォルダコピー(サブフォルダ以下も含む)
指定されたコピー先のフォルダに、コピー元のフォルダ名の中身を全てコピーする関数です。
コピー先のフォルダが存在しない場合は、作成します。
最初にコピー元のフォルダ内のファイルを全てコピー先にコピーを行います。
コピー元のフォルダ内のファイル一覧を取得には System.IO.Directory.GetFiles を用います。
その後で、コピー元のフォルダ内のサブフォルダの一覧を取得し、自分自身を再帰的にコールすることで
コピーを行います。サブフォルダの一覧の取得は System.IO.Directory.GetDirectories を用います。
System.IO.Directory.GetFiles 関数について
Public Shared Function GetFiles (path As String) As String()
path:
検索するディレクトリの相対パスまたは絶対パス。 この文字列の大文字と小文字は区別されません。
戻り値:
指定したディレクトリ内のファイルの完全名 (パスを含む) の配列。
ファイルが見つからない場合は空の配列。(空と言うことはLengthが 0 のString配列)
System.IO.Directory.GetDirectories 関数について
Public Shared Function GetDirectories (path As String) As String()
path:
検索するディレクトリの相対パスまたは絶対パス。 この文字列の大文字と小文字は区別されません。
戻り値:
指定したパス内のサブディレクトリのフルネーム (パスを含む) の配列。
ディレクトリが見つからない場合は空の配列。(空と言うことはLengthが 0 のString配列)
フォルダコピー関数
09 | Function CopyFolder( ByVal astrSrcFolderName As String , ByVal astrDesFolderName As String ) As Boolean |
14 | If Not System.IO.Directory.Exists(astrDesFolderName) Then |
15 | System.IO.Directory.CreateDirectory(astrDesFolderName) |
17 | System.IO.File.SetAttributes(astrDesFolderName, System.IO.File.GetAttributes(astrSrcFolderName)) |
21 | If astrDesFolderName.Chars((astrDesFolderName.Length - 1)) <> System.IO.Path.DirectorySeparatorChar Then |
22 | astrDesFolderName &= System.IO.Path.DirectorySeparatorChar |
26 | Dim ArrFiles As String () = System.IO.Directory.GetFiles(astrSrcFolderName) |
28 | For Each strFile In ArrFiles |
29 | System.IO.File.Copy(strFile, astrDesFolderName + System.IO.Path.GetFileName(strFile), True ) |
33 | Dim ArrDirs As String () = System.IO.Directory.GetDirectories(astrSrcFolderName) |
35 | For Each strDir In ArrDirs |
36 | If CopyFolder(strDir, astrDesFolderName + System.IO.Path.GetFileName(strDir)) = False Then |