确保路径字符串是有效的java路径字符串

确保路径字符串是有效的java路径字符串,java,path,Java,Path,这就是我如何确保属性文件中给定的路径是有效的java路径(使用\\而不是\): 在第一次替换中,我确保如果路径已经有效(具有\\而不是\),那么在第二次替换中它不会加倍为\\而不是\\ 不管怎样,我得到了一个奇怪的例外: java.lang.StringIndexOutOfBoundsException: String index out of range: 1 at java.lang.String.charAt(Unknown Source) at java.util.reg

这就是我如何确保属性文件中给定的路径是有效的java路径(使用\\而不是\):

在第一次替换中,我确保如果路径已经有效(具有\\而不是\),那么在第二次替换中它不会加倍为\\而不是\\

不管怎样,我得到了一个奇怪的例外:

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 java.lang.String.replaceAll(Unknown Source)
    at com.hw.Launcher.main(Launcher.java:56)

谁能告诉我为什么

replaceAll
需要正则表达式,请改用
replace


您可以找到JavaDocs
replaceAll
需要正则表达式,请改用
replace


您可以找到JavaDocs

如果您想确定路径是否有效,试试看怎么样

    File f = new File("c:\\this\\that");
    f.getCanonicalPath();

File类用于分解路径。这可能是验证路径是否有效的最佳方法。

如果您想确定路径是否有效,试试看如何

    File f = new File("c:\\this\\that");
    f.getCanonicalPath();
File类用于分解路径。这可能是验证路径是否有效的最佳方法。

(让我也为新手解释一下。)

如果有文本文件或字符串,通常只会出现一个反斜杠

在java源代码中,字符串或字符的表示形式,反斜杠是转义字符,将下一个字符转换为特殊含义。反斜杠本身应加倍,如
\\
。字符串值本身只有一个反斜杠字符

如果使用反斜杠转义(如
\n
换行符)读取特殊文本,则使用非正则表达式替换字符串:

// First escapes of other:
path = path.replace("\\n", "\n"); // Text `\n` -> linefeed
path = path.replace("\\t", "\t"); // Text `\t` -> tab
// Then escape of backslash:
path = path.replace("\\\\", "\\"); // Text `\\` -> backslash
对于文件路径,只有最后一个可能是有意义的,但它不应该是必需的。

(让我也为新手解释一下。)

如果有文本文件或字符串,通常只会出现一个反斜杠

在java源代码中,字符串或字符的表示形式,反斜杠是转义字符,将下一个字符转换为特殊含义。反斜杠本身应加倍,如
\\
。字符串值本身只有一个反斜杠字符

如果使用反斜杠转义(如
\n
换行符)读取特殊文本,则使用非正则表达式替换字符串:

// First escapes of other:
path = path.replace("\\n", "\n"); // Text `\n` -> linefeed
path = path.replace("\\t", "\t"); // Text `\t` -> tab
// Then escape of backslash:
path = path.replace("\\\\", "\\"); // Text `\\` -> backslash

对于文件路径,只有最后一个可能有意义,但它不应该被需要。

是的,它将替换所有发生的事件,它将替换所有发生的事件
file
类有一个构造函数,它类似于
file(directory,name)
并且它自动处理分隔符字符,因此您不必担心它。我可能会建议使用该构造函数。
文件
类有一个类似于
文件(目录、名称)
的构造函数,它会自动处理分隔符,因此您不必担心它。我可能会建议使用这个构造函数。