Java中如何拆分含Windows路径的字符串得到独立文件路径列表?
Java拆分带盘符冒号的多路径拼接字符串方案
核心思路
利用正则表达式的负向前瞻断言匹配分隔符冒号,仅将后缀不是路径分隔符的冒号识别为路径分隔符,避开Windows盘符后的合法冒号。
实现代码
public class PathSplitDemo { public static void main(String[] args) { String originStr = "D:/test/for test/change.txt:D:/test/for test/further.txt:D:/test/for test/yandex.txt"; // 正则规则:匹配后面不是斜杠/的冒号作为拆分点 String[] pathArr = originStr.split(":(?!/)"); // 输出验证 for (String path : pathArr) { System.out.println(path); } } }
输出结果
D:/test/for test/change.txt D:/test/for test/further.txt D:/test/for test/yandex.txt
说明
- Windows系统文件命名规则禁止文件名包含冒号,因此除了盘符后缀的冒号外,其余冒号均为拼接分隔符,该方案不存在误拆分风险
- 正则
:(?!/)为负向前瞻断言,代表当前冒号的后缀不匹配斜杠规则,刚好过滤掉盘符后紧跟斜杠的合法冒号 - 如果需要兼容反斜杠格式的Windows路径(如
D:\test\xxx.txt),可将正则调整为:(?![/\\\\]),同时适配两种路径分隔符
内容的提问来源于stack exchange,提问作者Petru Ciorba
相关产品推荐
相关产品推荐

