为了确定由相对路径指定的文件的规范路径或中间包含\..\
的路径,stackoverflow建议使用GetFullPathName()
here或GetLongPathName()
here。
这些功能有什么区别?
目的是从相对路径(例如..\someDir\someFile.txt
和someOtherDir\someFile.txt
)获取以驱动器号开头的路径,并从路径中消除额外的\..\
(例如C:\dirA\dirB\..\someFile.txt
- > C:\dirA\someFile.txt
)。
答案 0 :(得分:8)
GetFullPathName
通过预先设置调用进程的当前工作目录,将文件名和相对路径名解析为绝对路径。
GetLongPathName
只能将短名称(8.3)解析为长名称。
请注意,后者需要磁盘访问,因此也可以使用当前工作目录来解析相对路径。
<强> TL; DR:强>
调用GetFullPathName
来解析绝对路径的相对路径
调用GetLongPathName
以解析可能包含长名称形式的短(8.3)名称的绝对路径。
小心:
当前工作目录是每个进程资源,可以更改,例如通过标准文件打开对话框。我将使用 only 来解析可能与程序启动时的CWD相关的命令行参数。
每个8.3命名文件可能不存在长路径名。