ファイル関連:ファイルのコピー(System.IO.File.Copy)

VB2008でファイルのコピーを行う実行例サンプルです。

ファイル関連へ



・通常のコピー
 System.IO.File.Copy (コピー元ファイル名 , コピー先ファイル名 )
 コピー先に同じファイルが存在する場合はエラーになります。

・上書きコピー
 System.IO.File.Copy (コピー元ファイル名 , コピー先ファイル名 , True )

■実行画面
コピー元ファイルとコピー先フォルダーを指定しコピーを実行します。
ファイルのコピーフォーム

「コピー元ファイル」ボタンをクリックすると、ファイル選択ダイアログが表示されます。
ファイルを選択してください。
ファイル選択ダイアログ画面

「コピー先フォルダ」ボタンをクリックすると、フォルダ選択ダイアログが表示されます。
フォルダを選択してください。
フォルダ選択ダイアログ画面

通常のコピーでコピー先フォルダに既に同名のファイルが存在する場合エラーが発生します。
エラーメッセージ

■実行コード

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ofd As New OpenFileDialog

With ofd
'タイトル
.Title = "開くファイルを選択してください"
'初期のファイル名
.FileName = ""
End With

'「ファイルを開く」ダイアログを表示。
If ofd.ShowDialog() = DialogResult.OK Then
'選択されたファイル名を表示
Label1.Text = ofd.FileName
End If

ofd.Dispose()

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim path As String
Dim fbd As New FolderBrowserDialog

fbd.Description = "フォルダ選択"
fbd.RootFolder = System.Environment.SpecialFolder.MyComputer
'初期フォルダ
path = Label2.Text
fbd.SelectedPath = path

If fbd.ShowDialog() = DialogResult.OK Then
Label2.Text = fbd.SelectedPath
End If

fbd.Dispose()

End Sub

Private Function MyCheck() As Boolean
MyCheck = False
If Label1.Text = "" Then
MsgBox("コピー元のファイルを指定してください。")
Exit Function
End If
If Label2.Text = "" Then
MsgBox("コピー先のフォルダを指定してください。")
Exit Function
End If
MyCheck = True
End Function

'通常のコピー
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim sdir As String
Dim sfina As String

If MyCheck() = False Then
Exit Sub
End If
'コピー先フォルダ
sdir = Label2.Text
If Strings.Right(sdir, 1) <> "\" Then
sdir &= "\"
End If
'ファイル名のみの取り出し
sfina = IO.Path.GetFileName(Label1.Text)

On Error GoTo errexit
'通常のコピー
System.IO.File.Copy(Label1.Text, sdir & sfina)
Exit Sub
ErrExit:
MsgBox("エラーが発生しました。" & vbNewLine & Err.Description)
End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim sdir As String
Dim sfina As String

If MyCheck() = False Then
Exit Sub
End If
'コピー先フォルダ
sdir = Label2.Text
If Strings.Right(sdir, 1) <> "\" Then
sdir &= "\"
End If
'ファイル名のみの取り出し
sfina = IO.Path.GetFileName(Label1.Text)

'通常のコピー
System.IO.File.Copy(Label1.Text, sdir & sfina, True)
End Sub
End Class


Visual Basic 2008 Express Edition実践入門