String Утилиты Сплит - Linux
Ниже код Java работает на машине Windows
filepath = "euro\football\france\winners.txt";
String[] values = StringUtils.split(filePath, "\\");
if (values != null && values.length >= 4) {
} else {
//error
}
Но столкнулся с проблемой в Linux при выполнении кода. если цикл не выполняется, иначе цикл выполняется.
Нужно ли указывать split как "\" или "/" для linux
String[] values = StringUtils.split(filePath, "\\");
Любое предложение будет полезно
2 ответа
Чтобы избежать этого, я бы использовал простое регулярное выражение [/\\]
который разделится либо с /
или же \
, как это:
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]
Если файл находится на компьютере, на котором работает JVM, вы можете использовать File.separatorChar
получить системно-зависимый разделитель локальной машины.
String[] values = StringUtils.split(filePath, File.separator);
JavaDoc говорит (File.separatorChar
):
Системно-зависимый символ разделителя имен по умолчанию. Это поле инициализируется, чтобы содержать первый символ значения системного свойства file.separator. В системах UNIX значение этого поля равно '/'; в системах Microsoft Windows это '\'.