java中的路径处理、左右斜杠

📅 2026/6/16 23:27:28
java中的路径处理、左右斜杠
文章目录PathNormalizer 工具类属于基础问题也整理下。典型场景获取文件路径拿到的是 d:\data\upload 然后代码中拼接的是/这样存到库里乱七八糟。PathNormalizer 工具类importjava.nio.file.Path;importjava.nio.file.Paths;publicclassPathNormalizer{/** * 统一路径分隔符为正斜杠推荐用于存储和显示 */publicstaticStringnormalizeToUnix(Stringpath){if(pathnull||path.isEmpty()){returnpath;}// 统一替换反斜杠为正斜杠returnpath.replace(\\,/).replaceAll(/,/);// 合并多个斜杠}/** * 统一为系统默认分隔符用于文件系统操作 */publicstaticStringnormalizeToSystem(Stringpath){if(pathnull||path.isEmpty()){returnpath;}// 先统一为正斜杠再转为系统分隔符StringnormalizednormalizeToUnix(path);returnnormalized.replace(/,File.separatorChar);}/** * 安全拼接路径所有输入先归一化 */publicstaticStringjoin(Stringbase,String...parts){if(basenull){returnnull;}// 归一化基础路径StringnormalizednormalizeToUnix(base);// 去除末尾斜杠if(normalized.endsWith(/)){normalizednormalized.substring(0,normalized.length()-1);}// 拼接每个部分for(Stringpart:parts){if(partnull||part.isEmpty()){continue;}// 归一化当前部分StringnormalizedPartnormalizeToUnix(part);// 去除开头斜杠if(normalizedPart.startsWith(/)){normalizedPartnormalizedPart.substring(1);}normalized/normalizedPart;}returnnormalized;}/** * 转换为 Path 对象自动处理系统分隔符 */publicstaticPathtoPath(Stringpath){if(pathnull){returnnull;}returnPaths.get(normalizeToUnix(path));}}