为了确定由相对路径或中间包含 \..\
的路径指定的文件的规范路径,stackoverflow 建议使用 GetFullPathName()
here或 GetLongPathName()
here .
这些函数有什么区别?
目的是从相对路径(如 ..\someDir\someFile.txt
和 someOtherDir\someFile.txt
)获取以盘符开头的路径,然后从路径中删除多余的 \..\
(例如 C:\dirA\dirB\..\someFile.txt
-> C:\dirA\someFile. txt
).
最佳答案
GetFullPathName
通过在调用进程的当前工作目录前添加文件名和相对路径名来将文件名和相对路径名解析为绝对路径。
GetLongPathName
仅将短 (8.3) 名称解析为长名称。
请注意,后者需要磁盘访问权限,因此相对路径也可能通过使用当前工作目录来解析。
长话短说:
调用 GetFullPathName
将相对路径解析为绝对路径。
调用 GetLongPathName
将可能包含短 (8.3) 名称的绝对路径解析为长名称形式。
小心:
当前工作目录是每个进程的资源,可以更改,例如通过标准文件打开对话框。我将使用此仅 来解析可能与程序启动所在的 CWD 相关的命令行参数。
每个 8.3 命名文件可能不存在长路径名。
关于c++ - WinAPI 中的 GetLongPathName 和 GetFullPathName 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31249019/