曲径通幽论坛

标题: GetFullPathName() -- 获取文件的完整路径 [打印本页]

作者: beyes    时间: 2011-9-16 10:17
标题: GetFullPathName() -- 获取文件的完整路径
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





欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2