如果路径以分隔符开头,那么您获得空字符串(在有效路径中)的唯一位置将是第一个项目.如果它有前导分隔符,则在没有它的路径上拆分.
String path = "/a/b/c";
String[] directories = path.substring(1).split(DIRECTORY_PATH_SEPARATOR);
// { "a", "b", "c" }
正如OmnipotentEntity所指出的,我对有效路径的假设是错误的.使用split()时,你必须通过数组并保持非空字符串.
String path = "/a/bc";
String[] split = path.split(DIRECTORY_PATH_SEPARATOR);
ArrayList directories = new ArrayList(split.length);
for (String dir : split)
if (dir.length() > 0)
directories.add(dir);
另一种方法是使用实际的正则表达式来匹配非分隔符:
String path = "/a/bc";
ArrayList directories = new ArrayList();
Pattern regex = Pattern.compile("[^" + DIRECTORY_PATH_SEPARATOR + "]+");
Matcher matcher = regex.matcher(path);
while (matcher.find())
directories.add(matcher.group());