1

下面的 Java 代码适用于 Windows 机器

filepath = "euro\football\france\winners.txt";
String[] values = StringUtils.split(filePath, "\\");

if (values != null && values.length >= 4) {

} else {
    //error
}

但是在执行代码时在linux中遇到问题。if 循环没有执行,else 循环正在执行。

对于 linux,我们是否需要将拆分为“\”或“/”

String[] values = StringUtils.split(filePath, "\\");

任何建议都会有所帮助

4

2 回答 2

2

如果文件在运行 JVM 的机器上,那么您可以使用它File.separatorChar来获取本地机器的系统相关分隔符。

    String[] values = StringUtils.split(filePath, File.separator);

JavaDoc说 ( ) File.separatorChar

系统相关的默认名称分隔符。该字段被初始化为包含系统属性 file.separator 值的第一个字符。在 UNIX 系统上,该字段的值为 '/';在 Microsoft Windows 系统上,它是 '\'。

于 2018-07-18T11:21:34.297 回答
1

为避免这种情况,我将使用简单的正则表达式,它将使用or[/\\]拆分,如下所示:/\

String[] filePaths = {
        "euro/football/france/winners.txt",   //linux path
        "euro\\football\\france\\winners.txt" //windows path
};
for (String filePath : filePaths) {
    String[] values = filePath.split("[/\\\\]");
    System.out.println(Arrays.toString(values));
}

输出

[euro, football, france, winners.txt]
[euro, football, france, winners.txt]
于 2018-07-18T10:08:04.563 回答