在Visual Basic中開發應用程序時,可能會需要在磁盤上創建一 個臨時目錄或文件,本文介紹如何在Visual Basic 4.0中創建臨時文 件。
使用GetTempFileName函數
Windows API函數中的GetTempFileName函數可以用來在指定的磁 盤驅動器上創建一個新的文件。盡管所創建的文件是一個臨時文件, 但不再需要它的時候,程序員還是需要將它從磁盤上物理地刪除掉。
要在VB中使用GetTempFileName函數,必須將如下聲明語句包含在 程序中(請注意該聲明語句需要書寫在一行內):
Private Declare Function GetTempFileName Lib"kernel32" A lias"GetTempFile NameA" (ByVal lpszPath As String, ByVal lpP refixString As String, ByVal wUni que As Long, ByVal lpTempF ileName As String) As Long
該GetTempFileName函數需要4個參數:
第一個參數是希望創建新文件的驅動器和/或路徑的名稱,在下面 的樣例程序中,新文件創建在驅動器C的根目錄下。
第二個參數是指派給文件名稱的前綴。如果將該前綴指定為"TES T",則函數將把創建的新文件名稱的前四個字符設置為"TEST",即"TES T*.TMP"。
第三個參數應該被設置為0,告訴該函數為文件名稱自動產生隨機 號碼。該隨機號碼會被添加到前綴字符的後面,以產生一個獨特而且 完整的文件名稱。
第四個參數是一個字符串緩存,它至少要有256個字符的長度,以 存放臨時文件的名稱。
在調用該函數之後,新文件創建在指定的磁盤上。這裡重申一下, 當退出應用程序時,必須物理地將該文件從磁盤上刪除。
樣例程序
該程序顯示了如何在VB應用程序中創建一個臨時文件。
1.在Visual Basic中開始一個新的工程,采用缺省的方法建立For m1。
2.將如下聲明語句添加到Form1的通用聲明部分中(請注意該聲明 語句需要被書寫在一行內):
Private Declare Function GetTempFileName Lib"kernel32" A lias"GetTempFile NameA"(ByVal lpszPath As String, ByVal lpPr efixString As String, ByVal wUniq ue As Long, ByVal lpTempFi leName As String) As Long
3.將如下代碼添加到Form1的Form_Load事件中:
Private Sub Form_Load()
Text1.TEXT = ""
End Sub
4.在Form1上添加一個文本框控件,采用缺省的方法建立Text1。
5.在Form1上添加一個命令按鈕控件,采 筆〉姆椒ń立Comman d1。
6.將如下代碼添加到Command1的單擊事件中:
Private Sub Command1_Click() Dim FilePrefix As String Dim NewFile As String * 256 FilePrefix = "TEST" NewFile = GetTempName(FilePrefix) Text1.TEXT = NewFile End Sub
7.創建一個新的名為GetTempName的函數,將如下代碼添加到該函 數中:
Private Function GetTempName(TmpFilePrefix As String) As String Dim TempFileName As String * 256 Dim X As Long Dim DriveName As String DriveName = "c:" X = GetTempFileName(DriveName, TmpFilePrefix, 0, TempFi leName) GetTempName = Left$(TempFileName, InStr(TempFileName, Ch r(0)) - 1) End Function
按下F5鍵,執行本樣例程序。單擊命令按鈕,在驅動器C的根目錄 下創建一個新的臨時文件。該新創建的文件的名稱被顯示在文本框控 件中