java - 转换为可移植文件路径

标签 java regex exception

public static String getPortableFilePath(String target)    
{
Pattern ptr=Pattern.compile("[\\|/]+");
Matcher mtr=ptr.matcher(target);
return mtr.replaceAll(File.separator);  
}

public static void main(String[] args)
{
   System.out.println(getPortableFilePath("C:///Program Files////Java\\jdk1.6.0_23/bin"));  
}

在上面的代码中,我尝试用当前系统文件分隔符替换所有正斜杠和反斜杠。代码在放入类中时可以正常编译,但在执行时会出现数组索引越界异常。你猜为什么吗?

异常(exception):

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 1

at java.lang.String.charAt(Unknown Source)
at java.util.regex.Matcher.appendReplacement(Unknown Source)
at java.util.regex.Matcher.replaceAll(Unknown Source)
at Files.getPortableFilePath
at Files.main

最佳答案

您的方法 (a) 命名错误且 (b) 不必要。命名错误,因为它不返回可移植文件路径,而是返回当前系统的路径;不必要的,因为如果你只使用/随处可见,Java 将在所有平台上正确运行。 Java 文件名中永远不需要使用反斜杠。

关于java - 转换为可移植文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5689234/

相关文章:

regex - 通过正则表达式拆分输入字符串

javascript - JQuery 与 RegEx 匹配不起作用

javascript - 访问替换函数内的第一个正则表达式匹配组

c++ - 异常被捕获两次

python - 与 IOError 相关联的 Python 错误编号是否稳定?

java - 二维数组中的寻路算法

java - Cucumber Java - JUnit 在命令行上设置单色

java - 如何从文件中获取前 4 个整数。

java - 当Android内存不足时,静态最终变量可以为null吗?

exception - BlackBerry - 从位图创建图形对象时出现异常