【发布时间】:2018-10-27 02:15:39
【问题描述】:
在我的 java 项目上运行时,静态分析工具会出现“文件分隔符中的可移植性缺陷”错误,我需要修复它。在我的代码中,我有 fileUnsafe。我想使用一种方法将其转换为 fileSafe(如下所述)。
// Case 1
//no platform independence, good for Unix systems
File fileUnsafe = new File("tmp/abc.txt");
//platform independent and safe to use across Unix and Windows
File fileSafe = new File("tmp"+File.separator+"abc.txt");
类似的路径 -
// Case 2
//no platform independence, good for Unix systems
File fileUnsafe = new File("/tmp/abc.txt");
// platform independent and safe to use across Unix and Windows
File fileSafe = new File(File.separator+"tmp"+File.separator+"abc.txt");
我的项目中有多个这样的文件地址,我需要创建一些转换方法,该方法可以只将此路径作为字符串接收,将 File.separator 附加到它,然后返回它。像这样 -
File fileSafe = new File(someConversionMethod("/tmp/abc.txt"));
我尝试了这种方法,但它在案例 2 上给了我 NullPointerException。
public static String someConversionMethod(String target) {
Pattern ptr = Pattern.compile("[\\\\\\\\|/]+");
Matcher mtr = ptr.matcher(target);
return mtr.replaceAll(File.separator + "" + File.separator);
}
任何解决此方法或建议处理这种情况的优雅方法的帮助将不胜感激。
nit - 我提到了Replacing character with File.separator using java.regex Pattern Matcher,但它并没有真正帮助我的情况。
【问题讨论】:
-
我不确定我们是否需要这个方法,因为如果你只是在任何地方使用 /,Java 将在所有平台上正确运行。不需要在 Java 文件名中使用反斜杠。如果是这样,那我们为什么还需要 File.分隔符了吗?
-
您用于 Java 编程的 IDE 是哪个?它是否支持正则表达式查找和替换?
-
我正在使用 Eclipse。它支持正则表达式查找和替换。
-
忽略警告。这是不对的。
/是 Java 中独立于平台的路径分隔符。
标签: java regex file separator matcher