曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 10374|回复: 0
打印 上一主题 下一主题

[文件与IO] GetFullPathName() -- 获取文件的完整路径

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34397
跳转到指定楼层
楼主
发表于 2011-9-16 10:17:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-18 14:08 , Processed in 0.095580 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表