VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 创建临时文件
发表评论(0)作者:, 平台:, 阅读:10010, 日期:2000-03-12
 


创建临时文件



在Visual Basic 中 开 发 应 用 程 序 的 时 候, 可 能 会 需 要 在 磁 盘 上 创 建 一 个 临 时 目 录, 本 文 将 介 绍 如 何 在Visual Basic 版 本4.0 中 创 建 临 时 文 件。


使 用GetTempFileName 函 数

可 以 通 过 使 用API 函 数 中 的GetTempFileName 函 数 来 在 一 个 指 定 的 磁 盘 驱 动 器 上 创 建 一 个 新 的 文 件。 尽 管 所 创 建 的 文 件 是 一 个 临 时 的 文 件, 当 不 再 需 要 它 的 时 候, 程 序 员 还 是 需 要 将 它 从 磁 盘 上 物 理 地 删 除 掉。

要 在VB 中 使 用GetTempFileName 函 数, 必 须 将 如 下 的 声 明 语 句 包 含 在 程 序 中( 注 意 该 声 明 语 句 需 要 被 书 写 在 一 行 内):


Private Declare Function GetTempFileName Lib "kernel32" Alias "GetTempFileNameA" (ByVal lpszPath As String, ByVal lpPrefixString As String, ByVal wUnique As Long, ByVal lpTempFileName As String) As Long


该GetTempFileName 函 数 需 要4 个 参 数:


第 一 个 参 数 是 希 望 创 建 新 文 件 的 驱 动 器 和/ 或 路 径 的 名 称, 在 下 面 的 样 例 程 序 中, 新 文 件 创 建 在 驱 动 器C 的 根 目 录 下。


第 二 个 参 数 是 指 派 给 文 件 名 称 的 前 缀。


第 三 个 参 数 应 该 被 设 置 为0, 告 诉 该 函 数 为 文 件 名 称 自 动 产 生 随 机 号 码。 该 随 机 号 码 然 后 被 添 加 到 前 缀 字 符 的 后 面 以 产 生 一 个 独 特 的 和 完 整 的 文 件 名 称。


第 四 个 参 数 是 一 个 字 符 串 缓 存, 它 至 少 要 有256 个 字 符 的 长 度, 以 存 放 临 时 文 件 的 名 称。 在 调 用 该 函 数 之 后, 新 文 件 创 建 在 指 定 的 磁 盘 上。 这 里 重 申 一 下, 当 退 出 应 用 程 序 时, 必 须 物 理 地 将 该 文 件 从 磁 盘 上 删 除。


样 例 程 序

该 程 序 显 示 了 如 何 在VB 应 用 程 序 中 创 建 一 个 临 时 文 件。

1. 在Visual Basic 中 开 始 一 个 新 的 工 程, 采 用 缺 省 的 方 法 建 立Form1。

2. 将 如 下 声 明 语 句 添 加 到Form1 的 通 用 声 明 部 分 中( 注 意 该 声 明 语 句 需 要 被 书 写 在 一 行 内):


Private Declare Function GetTempFileName Lib "kernel32" Alias "GetTempFileNameA" (ByVal lpszPath As String, ByVal lpPrefixString As String, ByVal wUnique As Long, ByVal lpTempFileName As String) As Long


3. 将 如 下 代 码 添 加 到Form1 的Form_Load 事 件 中:


Private Sub Form_Load()

Text1.TEXT = ""

End Sub

4. 在Form1 上 添 加 一 个 文 本 框 控 件, 采 用 缺 省 的 方 法 建 立Text1。

5. 在Form1 上 添 加 一 个 命 令 按 钮 控 件, 采 用 缺 省 的 方 法 建 立Command1。

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, TempFileName)

GetTempName = Left$(TempFileName, InStr(TempFileName, Chr(0)) - 1)

End Function


按 下F5 键, 执 行 样 例 程 序。 单 击 命 令 按 钮, 在 驱 动 器C 的 根 目 录 下 创 建 一 个 新 的 临 时 文 件。 该 新 创 建 的 文 件 的 名 称 被 显 示 在 文 本 框 控 件 中