玄関へお回り下さい。
フォルダーの作成・有無の確認及びコピー・移動・削除・フォルダー名の変更 (7個)  (SNo.015)

1.フォルダー(ディレクトリ)を新規に作成する
2.フォルダー(ディレクトリ)の有無を確認する
3.フォルダー(ディレクトリ)を削除する
4.フォルダー(ディレクトリ)をコピーする
5.フォルダー(ディレクトリ)を移動する
6.フォルダー(ディレクトリ)名を変更する
7.フォルダー(ディレクトリ)内のファイルを全てコピーする
使用コントロール Button1  〜 Button7
その他条件 WindowsXP(Vista) Visual Basic 2005(VB2008)
テストする フォルダー "c:\test" "c:\test1" をご用意下さい。
1.フォルダー(ディレクトリ)を新規に作成する

Private Sub Button1_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button1.Click
'フォルダー(ディレクトリ)を新規に作成する
    'Directory.CreateDirectory メソッド 
    'path で指定したすべてのディレクトリとサブディレクトリを作成します。
    System.IO.Directory.CreateDirectory("c:\Test")

    '深い階層のディレクトリも一発で作成できます。
    System.IO.Directory.CreateDirectory("c:\Test\Test1\Test2\Test3\")
End Sub

2.フォルダー(ディレクトリ)の有無を確認する

Private Sub Button2_Click(ByVal sender As System.Object, _
                         
ByVal e As System.EventArgs) Handles Button2.Click
'ディレクトリの有無を確認する
    'Directory.Exists メソッド
    '指定したパスがディスク上の既存のディレクトリを参照しているかどうかを確認します
   
Dim fn As String = "c:\Test"
   
If System.IO.Directory.Exists(fn) Then
        MessageBox.Show("フォルダー[" & fn & "]は存在します。")
   
Else
        MessageBox.Show("フォルダー[" & fn & "]は存在しません。")
   
End If
End Sub

3.フォルダー(ディレクトリ)を削除する

Private Sub Button3_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button3.Click
'フォルダー(ディレクトリ)を削除する
    'Directory.Delete メソッド
    'ディレクトリとその内容を削除します。
    Try
        '指定したパスから空のディレクトリを削除します。
        'この場合空でないとエラーが発生します
        System.IO.Directory.Delete("C:\test\")
        MessageBox.Show("空フォルダーを削除しました")
    Catch ex As Exception
        MessageBox.Show(ex.Message)     '現在の例外を説明するメッセージを表示

        'path のディレクトリ、サブディレクトリ、およびファイルを削除する
        System.IO.Directory.Delete("C:\test\", True)
        MessageBox.Show("フォルダー及びフォルダー内を全て削除しました")
    End Try
End Sub

※ 上記は、動作確認用に作成したものです。
4.フォルダー(ディレクトリ)をコピーする(FileSystemObject オブジェクトを使って)

Private Sub Button4_Click(ByVal sender As System.Object, _
                         
ByVal e As System.EventArgs) Handles Button4.Click
'[プロジェクト]→[参照の追加]で Microsoft Scripting Runtime を選択して追加しておいて下さい。
    Dim Fso As New Scripting.FileSystemObject
    '移動先のフォルダーを作成します。
    System.IO.Directory.CreateDirectory("c:\Test1\")
    'コピー先に同じ名前のフォルダーが無い事  Fso.CopyFolder(コピー元フォルダー, コピー先フォルダー)
    'コピー元フォルダーの末尾には \ をつけない事
    Fso.CopyFolder("c:\test", "c:\test1\", True)
End Sub

※ 指定フォルダー以下最下層までファイルを含む全てコピーできます。
  詳しくは、MSDN の CopyFolder メソッド をご覧下さい。
5.フォルダー(ディレクトリ)を移動する

Private Sub Button5_Click(ByVal sender As System.Object, _
                         
ByVal e As System.EventArgs) Handles Button5.Click
'フォルダー(ディレクトリ)を移動する
   
Dim sourceFolder As String = "c:\test1\"
   
Dim destinationFolder As String = "c:\test2\test1\"
  System.IO.Directory.Move(sourceFolder, destinationFolder)     
End Sub

c:\test2\ は存在していて  test1\ は存在しない事
結果 C:\test2\[test1\Test\Test1\Test2\Test3] []内が移動した部分
destinationFolder は無くてもよい
最階層までを含めてその中のファイル事丸々移動します
6.フォルダー(ディレクトリ)名を変更する

Private Sub Button6_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button6.Click
'フォルダー(ディレクトリ)名を変更する
    Dim oldName As String = "c:\test1\"     'C:\Test1\Test\Test1\Test2\Test3
    Dim newName As String = "c:\test2\"     '同名のフォルダーがすでに存在していない事
    '同じ階層内で移動すればフォルダー名の変更になる
    System.IO.Directory.Move(oldName, newName)  'C:\Test2\Test\Test1\Test2\Test3

    '上記のサブフォルダー名を変更します
    Dim oldName1 As String = "c:\test2\test\"
    Dim newName1 As String = "c:\test2\itiran\"
    System.IO.Directory.Move(oldName1, newName1)    'C:\Test2\itiran\Test1\Test2\Test3
End Sub

7.フォルダー(ディレクトリ)内のファイルを全てコピーする

Private Sub Button7_Click(ByVal sender As System.Object, _
                         
ByVal e As System.EventArgs) Handles Button7.Click
'フォルダー(ディレクトリ)内のファイルを全てコピーする
   
Dim srcePath As String = "c:\test1\"    'コピー元フォルダー
   
Dim destPath As String = "c:\test2\"    'コピー先フォルダー
   
Dim di As New System.IO.DirectoryInfo(srcePath)
   
For Each fi As System.IO.FileInfo In di.GetFiles()
        fi.CopyTo(destPath & fi.Name, 
True)     '上書き指定でコピー
   
Next
End Sub

※ サブフォルダー内はコピーしません





2004/04/26
2005/09/16


VBレスキュー(花ちゃん)
VB.NET2003  VB2005