delphi 获取临时文件目录(文件夹)和文件
获取临时文件目录(文件夹)和文件
代码
调用Winapi方式
procedure TForm1.Button1Click(Sender: TObject);
var
vPath, vFile: array [0 .. MAXBYTE] of Char;
begin
//获取临时文件路径
GetTempPath(MAXBYTE, vPath);
//生成一个新的临时文件(不使用时需要删除)
GetTempFileName(vPath, 'tmp', 0, vFile);
DeleteFile(vFile);
ShowMessage('临时文件目录 ' + vPath);
ShowMessage('临时文件 ' + vFile);
end;
调用System.IOUtils.TPath
方式
uses System.IOUtils;
procedure TForm1.Button2Click(Sender: TObject);
var
vPath, vFile: string;
begin
//获取临时文件路径
vPath := TPath.GetTempPath;
//生成一个新的临时文件(不使用时需要删除)
vFile := TPath.GetTempFileName;
DeleteFile(vFile);
ShowMessage('临时文件目录 ' + vPath);
ShowMessage('临时文件 ' + vFile);
end;
方法
System.IOUtils.TPath.GetTempPath
class function GetTempPath: string; static;
unit
返回存储临时文件目录的路径。此目录是系统管理的位置; 保存在这里的文件可能会在应用程序会话或系统重启之间被删除。
如果运行应用程序的系统不支持所请求的文件夹,或者所请求的文件夹在系统中不存在,此函数将返回一个空字符串。
指向各个平台上的位置:
- 在 Windows、OS X 和 Linux 上,它指向一个系统范围的目录。
- 在 iOS 和 Android 上,它指向一个特定于用户、特定于应用程序的目录。
平台 | 示例路径 |
---|---|
Windows XP | C:\Documents and Settings\<User name>\Local Settings\Temp |
Windows Vista 或更高版本 | C:\Users\<User name>\AppData\Local\Temp |
OS X | /var/folders/<random folder name> |
iOS Device | /private/var/mobile/Applications/<application ID>/tmp |
iOS Simulator | /Users/<username>/Library/Application Support/iPhone Simulator/<SDK version>/Applications/<application ID>/tmp |
Android | /storage/emulated/0/Android/data/<application ID>/files/tmp |
Linux | /tmp |
System.IOUtils.TPath.GetTempFileName
class function GetTempFileName: string; static;
unit
生成一个新的唯一命名的临时文件。实际上在临时目录创建了一个零大小的文件并返回其名称。调用者必须在不再使用该文件后将其删除。
如果用户无权访问系统的临时目录,会引发异常。
在 Linux 上,临时文件名称基于 GUID,格式如下:
File_%8x%4x%4x%16x_tmp
- %8x 代表 GUID.D1
- %4x 代表 GUID.D2
- %4x 代表 GUID.D3
- %16x 代表 GUID.D4
GetTempPath
function GetTempPath(nBufferLength: DWORD; lpBuffer: LPWSTR): DWORD;
unit
临时文件目录的路径。
参数
nBufferLength 由 lpBuffer 标识的字符串缓冲区的大小。(以 TCHAR
为单位)
lpBuffer 指向字符串缓冲区的指针,用于接收指定临时文件路径的以 null 结尾的字符串。 返回的字符串以反斜杠结尾,例如C:\TEMP\
”。
返回值
如果函数成功,则返回值为复制到 lpBuffer 的字符串的长度,不包括终止 null 字符。 如果返回值大于 nBufferLength,则返回值是保存路径所需的缓冲区的长度。
如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError
。
GetTempPath
函数按以下顺序检查是否存在环境变量,并使用找到的第一个路径:
- TMP 环境变量指定的路径。
- TEMP 环境变量指定的路径。
- USERPROFILE 环境变量指定的路径。
- Windows 目录。
请注意,该函数不验证路径是否存在,也不会测试当前进程是否对路径具有任何类型的访问权限。
GetTempFileName
function GetTempFileName(lpPathName, lpPrefixString: LPCWSTR;
uUnique: UINT; lpTempFileName: LPWSTR): UINT;
unit
为临时文件创建一个名称。 如果生成唯一文件名,则会创建一个空文件,并释放该文件的句柄;否则,仅生成文件名。
参数
lpPathName 文件名的目录路径。 通常为当前目录或 GetTempPath
函数的结果 。
lpPrefixString 文件名的前缀字符串。该函数最多使用此字符串的前三个字符作为文件名的前缀。
uUnique 如果为0,将创建一个空文件并将其关闭。如果不是0,仅创建文件名,不会尝试验证文件名的唯一性。
如果为0,则函数会尝试使用当前系统时间形成唯一的文件名。 如果文件已存在,则数字将增加一个,函数测试此文件是否已存在。 这将继续,直到找到唯一的文件名。
lpTempFileName 指向接收临时文件名的缓冲区的指针。
返回值
如果函数成功,则返回值指定临时文件名中使用的唯一数值。 如果 uUnique 参数为非零,则返回值指定相同的数字。
如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError
。