Pharo是否支持路径中使用家目录标识~?如何解析~开头的路径
Pharo 8 波浪号家目录路径解析方法
Pharo 8 中String>>asPath已默认取消了波浪号()的家目录自动展开特性,该符号会被识别为普通目录名称,因此直接调用`asPath`/`asFileReference`会得到错误的路径结果,可通过以下两种标准方式处理带的家目录路径:
方法1:使用FileLocator拼接路径(最推荐)
FileLocator是Pharo提供的标准路径定位工具,FileLocator home直接指向当前用户家目录,使用/运算符即可拼接后续路径段,自动适配不同操作系统的路径格式:
"获取对应文件的引用" pubKeyFile := FileLocator home / '.ssh' / 'id_rsa.pub'. "判断文件是否存在" pubKeyFile exists. "文件存在时返回true" "获取绝对路径字符串" pubKeyFile fullName.
方法2:直接解析带~的字符串路径
如果你拿到的是已经写好的带~的完整路径字符串,使用Path fromString:方法即可自动完成波浪号展开:
"解析带~的路径字符串" pubKeyPath := Path fromString: '~/.ssh/id_rsa.pub'. "转为文件引用判断存在性" pubKeyPath asFileReference exists. "获取绝对路径字符串" pubKeyPath fullName.
补充说明
旧版本Pharo中String>>asPath确实支持波浪号展开,后续版本为了统一路径解析逻辑,把特殊字符处理收拢到了Path fromString:和FileLocator体系中,所以才会出现示例和实际运行结果不一致的情况。
内容的提问来源于stack exchange,提问作者melkyades
相关产品推荐
相关产品推荐

