下面的Java代码在Windows机器中工作
filepath = "eurofootballfrancewinners.txt";
String[] values = StringUtils.split(filePath, "\");
if (values != null && values.length >= 4) {
} else {
//error
}
但是在linux中执行代码时面临问题。如果循环未执行,则else循环正在执行。
对于linux ,我们需要将拆分为"\"或"/"吗
String[] values = StringUtils.split(filePath, "\");
任何建议都将有助于
如果文件在JVM运行的机器上,则可以使用File.separatorChar
获取本地机器的系统相关分隔符。
String[] values = StringUtils.split(filePath, File.separator);
JavaDoc说(File.separatorChar
(:
依赖于系统的默认名称分隔符。此字段为初始化为包含系统值的第一个字符属性file.separator。在UNIX系统上,此字段的值为'/';在Microsoft Windows系统上,它是"\"。
为了避免这种情况,我将使用简单的正则表达式[/\]
,它将与/
或分离,如下所示:
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]