GetFullPathName() 函数可以获得文件的全路径名。它声明如下:DWORD WINAPI GetFullPathName(
__in LPCTSTR lpFileName,
__in DWORD nBufferLength,
__out LPTSTR lpBuffer,
__out LPTSTR *lpFilePart
);
第 1 个参数是个文件名;第 2 个参数是文件名所存放的缓冲区的长度;第 3 个参数是文件名所存放的缓冲区;第 4 个参数是一个指向文件名指针的指针,实际上它就是从整个完整路径中截取了文件名部分。
示例程序:
[C++] 纯文本查看 复制代码
#include "stdafx.h"
#define BUFSIZE 4096
int _tmain(int argc, _TCHAR* argv[])
{
DWORD retval = 0;
BOOL success;
TCHAR buffer[BUFSIZE] = _T("");
PTCHAR pbuf = buffer;
TCHAR **lppPart = &pbuf; //= {NULL};
if (argc != 2) {
_tprintf(_T("Usage: %s [file]\n"), argv[0]);
}
retval = GetFullPathName(argv[1], BUFSIZE, buffer, lppPart);
if (retval == 0) {
printf ("GetFullPathName failed (%d)\n", GetLastError());
return 1;
} else {
_tprintf(_T("The full path name is: %s\n"), buffer);
if (lppPart != NULL && *lppPart != 0) {
_tprintf(_T("The final component is the path name is: %s\n"), *lppPart);
}
}
return 0;
}
运行输出:D:\WindowsAPP\GetFullPathName\Debug>GetFullPathName.exe a.txt
The full path name is: D:\WindowsAPP\GetFullPathName\Debug\a.txt
The final component is the path name is: a.txt 需要注意的是,该函数并不判断指定文件名的文件是否真实存在,它只是为所指定的文件名添加上程序所在位置的路径前缀。比如上面程序中,在命令行上指定一个在当前目录下并不存在的文件的文件名,它也照样输出,如:D:\WindowsAPP\GetFullPathName\Debug>GetFullPathName.exe NoThisFile.txt
The full path name is: D:\WindowsAPP\GetFullPathName\Debug\NoThisFile.txt
The final component is the path name is: NoThisFile.txt |