一時ファイルの作成方法について
最終更新日 2006 年 7 月 13 日
サンプル コードのダウンロード (vbmigtips_GetTempFileName.msi, 475 KB)
※ このサンプルをインストールするには Visual Studio 2005 が必要です。
Visual Basic 6.0 で、一時ファイルを作成する場合、一時ファイルのファイル名や作成場所などを指定する必要があります。一方、Visual Basic .NET 以降では、System.IO.Path クラスの GetTempFileName メソッドを用いることで、それらを考慮せずに一時ファイルを作成できるようになりました。さらに、Visual Basic 2005 では、.NET Framework 2.0 の追加により、My 機能がサポートされ、より簡単に一時ファイルを作成できるようになりました。そこで、今回、Visual Basic 2005 の My 機能を使用して、一時ファイルを作成する方法を紹介します。今回、[一時ファイル作成]ボタンと[一時ファイル削除]ボタンの操作によって、一時ファイルの作成と削除を行うアプリケーションを作成します(図 1)。

図 1
また、一時ファイル作成後、作成した一時ファイルの存在を確認するために、一時ファイルフォルダを自動的に開きます。
まず、一時ファイルを作成します。一時ファイルを作成する場合、Visual Basic 2005 では、My.Computer.FileSystem オブジェクトの GetTempFileName メソッドを使用します。一時ファイル作成の実装コードは以下のとおりです。
|
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TempFileName =My.Computer.FileSystem.GetTempFileName
Button1.Enabled = False
Button2.Enabled = True
Label2.Text = TempFileName
OpenFileExplorer(My.Computer.FileSystem.SpecialDirectories.Temp)
End Sub
Private Sub OpenFileExplorer(ByVal strFilePath As String)
Dim myProcess As New Process()
Try
myProcess.StartInfo.FileName = strFilePath
myProcess.StartInfo.Verb = "Open"
myProcess.Start()
Catch ex As Exception
Throw
End Try
End Sub
|
リスト 1
上記(リスト 1)の「TempFileName = My.Computer.FileSystem.GetTempFileName()」では、一時ファイルを一意の名前でディスクに作成し、そのファイルの完全パスを取得します。
「OpenFileExplorer(My.Computer.FileSystem.SpecialDirectories.Temp)」では、OpenFileExplorer メソッドで、一時ファイルフォルダを開きます。OpenFileExplorer メソッドの「myProcess.StartInfo.FileName = strFilePath」では、開くフォルダのパスを指定し、「myProcess.StartInfo.Verb = "Open"」で実行するアクションを指定します。
そして、「myProcess.Start()」で、指定したフォルダ(strFilePath)を開きます。
次に、作成する一時ファイルを削除する処理を実装します。今回、アプリケーション終了後、作成した一時ファイルを残さないように、フォームが閉じたあとに発生する FormClosed イベントハンドラでもファイルを削除する処理を実装します。一時ファイルの削除は、My.Computer.FileSystem オブジェクトの DeleteFile メソッドを使用します。実装コードは以下のとおりです。
|
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If My.Computer.FileSystem.FileExists(TempFileName) Then
My.Computer.FileSystem.DeleteFile(TempFileName)
Button1.Enabled = True
Button2.Enabled = False
Label2.Text = ""
End If
End Sub
Private Sub Form1_FormClosed(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
If My.Computer.FileSystem.FileExists(TempFileName) Then
My.Computer.FileSystem.DeleteFile(TempFileName)
End If
End Sub
|
リスト 2
上記リスト(リスト 2)の「My.Computer.FileSystem.FileExists(TempFileName)」で、一時ファイルが存在するかどうかを確認し、一時ファイルが存在した場合、「My.Computer.FileSystem.DeleteFile(TempFileName)」で、ファイルを削除します。
リスト 1、リスト 2 を実装し、[一時ファイル作成]ボタンをクリックすると、一時ファイルが作成され、そのファイルのパスがラベルに表示されます。そして、一時ファイル用フォルダが開きます(図2)。

図 2
[一時ファイル削除] ボタンをクリックすると、一時ファイルは削除されます。また、作成した一時ファイルを削除せず、アプリケーションを終了すると、一時ファイルが存在するか確認し、一時ファイルを削除します。
|