GetFullPathName和GetLongPathName

     这两个都是kernal32.dll提供的API。

     参考MSDN说明:

     GetFullPathName: 用于获取某文件的全路径和文件名称;不推荐在多线程应用中使用;该函数不检查返回的路径是否合法或存在;也用于计算路径中的部分值(比如取父目录)。

     GetLongPathName: 转换指定路径为长路径格式(相对短路径ShortPath : dos格式而言);在多数系统中,短路径都包含有符号'~',但是并不是所有的系统都遵循这个约定,也不是意味这你可以跳过调用GetLongPathName;若短路径是合法的,而返回的长路径是非法,函数也会返回成功。

      以上说明,基本已经清楚地说明了用法。但是实际编程当中,还是有不少人,对短路径的转换,用GetFullPathName来处理——虽然也能成功,但是也有例外(比如程序处于program files下,点击关联文件,启动该程序,并不能得到预期的文件长路径)。应该使用GetLongPathName,这才是专门用于转换长路径的函数。

短路径名实在DOS下的命名规则
在DOS中,主文件名的长度不能超过8个字符
如果超过了8个 系统自动截取前6个字符,然后加上~1
如果前6个字符一样了,就依次使用~2,~3
举个例子,如果C盘目录下有Program Files、Program Filess、Programme Files三个文件夹,他们的前6个字符都是progra。将他们按照字母顺序排序:
Program Files
Program Filess
Programme Files
那么短路径分别为:
progra~1
progra~2
progra~3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值