Метод String.split(String)
не очень гибок, и его результаты могут быть удивительными (например, молча отбрасывать пустые конечные строки).Я использую библиотеки Guava (Google Core Libraries для Java) для всех своих проектов, и в них содержится очень хорошая утилита Splitter
, которая делает то, что вы хотите, в очень удобочитаемоми предсказуемым образом:
String path = "/a/b///c///";
Iterable<String> directories = Splitter
.on(DIRECTORY_PATH_SEPARATOR)
.omitEmptyStrings()
.split(path);
Это дает вам итерацию, которую вы можете напрямую использовать в цикле for следующим образом:
for(String directory : directories) {
System.out.println(directory);
}
В этом случае он даже не создает промежуточногообъект для хранения каталогов, но он создает их на лету.
Если вам нужен список каталогов, вы можете скопировать итерируемое в ArrayList
или массив, например так:
List<String> dirList = Lists.newArrayList(directories);
String[] dirArray = Iterables.toArray(directories, String.class);
В качестве заключительного замечания: для написания переносимого кода вы должны использовать File.separator
вместо DIRECTORY_PATH_SEPARATOR
.