发表评论(0)作者:, 平台:, 阅读:10100, 日期: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 的 根 目 录 下 创 建 一 个 新 的 临 时 文 件。 该 新 创 建 的 文 件 的 名 称 被 显 示 在 文 本 框 控 件 中