使用Java Path#resolve方法时是否需要考虑File#separator分隔符?
结论
不需要手动将HDFS路径字符串中的正斜杠替换为File#separator,即使在Windows系统中,你给出的写法也可以正常运行。
原理说明
- Java NIO的
PathAPI本身为跨平台场景设计,调用resolve方法处理传入的路径字符串时,会自动将字符串中的正斜杠转换为当前操作系统对应的路径分隔符,不需要开发者手动做替换操作。 - HDFS返回的路径统一使用正斜杠作为分隔符,这类路径字符串可以直接传入
resolve方法,会自动适配为当前系统的本地路径格式。 - 以你给出的Windows环境下的代码为例:
Path base = Path.get(a, b); String pathname = "c/d"; Path target = base.resolve(pathname);
最终得到的target路径格式确实为a\b\c\d,完全符合Windows系统的路径规范。
注意事项
不建议自行替换路径分隔符:如果路径中存在特殊字符、转义字符,手动替换反而容易破坏原路径的正确性,直接交给Path API处理即可。
内容的提问来源于stack exchange,提问作者Jin Kwon
相关产品推荐
相关产品推荐

