×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
指定されたコピー先のフォルダに、コピー元のフォルダ名の中身を全てコピーする関数です。 コピー先のフォルダが存在しない場合は、作成します。 最初にコピー元のフォルダ内のファイルを全てコピー先にコピーを行います。 コピー元のフォルダ内のファイル一覧を取得には 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配列)
フォルダコピー関数
''' ----------------------------------------------------------------------- '''''' フォルダコピー(サブフォルダ以下も含む) ''' ''' <param name="astrSrcFolderName">コピー元フォルダ</param> ''' <param name="astrDesFolderName">コピー先フォルダ</param> '''True:正常, False:エラー ''' ----------------------------------------------------------------------- Function CopyFolder(ByVal astrSrcFolderName As String, ByVal astrDesFolderName As String) As Boolean '戻り値初期化 CopyFolder = False Try 'コピー先のフォルダがないときは作る If Not System.IO.Directory.Exists(astrDesFolderName) Then System.IO.Directory.CreateDirectory(astrDesFolderName) '属性もコピー System.IO.File.SetAttributes(astrDesFolderName, System.IO.File.GetAttributes(astrSrcFolderName)) End If 'コピー先のフォルダ名の末尾に"\"をつける If astrDesFolderName.Chars((astrDesFolderName.Length - 1)) <> System.IO.Path.DirectorySeparatorChar Then astrDesFolderName &= System.IO.Path.DirectorySeparatorChar End If 'コピー元のフォルダにあるファイルをコピー Dim ArrFiles As String() = System.IO.Directory.GetFiles(astrSrcFolderName) Dim strFile As String For Each strFile In ArrFiles System.IO.File.Copy(strFile, astrDesFolderName + System.IO.Path.GetFileName(strFile), True) Next 'コピー元のフォルダにあるフォルダをコピー(再帰呼出) Dim ArrDirs As String() = System.IO.Directory.GetDirectories(astrSrcFolderName) Dim strDir As String For Each strDir In ArrDirs If CopyFolder(strDir, astrDesFolderName + System.IO.Path.GetFileName(strDir)) = False Then '再帰呼出での内部のフォルダのコピーがエラーの場合 Return False End If Next '正常終了 Return True Catch ex As Exception 'エラー処理が必要な場合は、ここに記述する End Try End Function
関連する記事
⇒指定フォルダ内の全ファイルを削除 :[Directory.GetFiles,File.Delete]⇒指定フォルダ内の全ファイルをクリア :[Directory.GetFiles,File.Delete]
⇒テキストファイル追記処理 :[File.ReadAllText,File.AppendAllText]
⇒テキストファイル先頭行削除処理 :[IO.StreamReader,IO.StreamWriter,Encoding.GetEncoding]
⇒ファイルサイズ取得 :[IO.FileInfo]
⇒テキストファイルレコード件数取得 :[IO.StreamReader]
⇒ファイル上書きコピー :[IO.FileInfo,File.Copy]
PR
コメント