java StringBuilder拆分无法处理某些文件
我试图获取每个文件的父目录,并将其放入JavaFX中的ListView中
它确实有效,但对某些文件名无效,我不明白为什么
Iterator<String> listIterator = loadedFiles.iterator();
StringBuilder listItem = null;
while (listIterator.hasNext()) {
File listFile = new File(listIterator.next());
listItem = new StringBuilder(Arrays.toString(listFile.getAbsolutePath().split(listFile.getName())));
toDir(listItem);
ctrl.fileList.getItems().add(listItem.toString());
}
获取文件路径,并切断文件名
今天:
private void toDir(StringBuilder builder) {
builder.deleteCharAt(builder.length() - 1);
builder.deleteCharAt(0);
if (builder.charAt(builder.length() - 1) == '\\') {
builder.deleteCharAt(builder.length() - 1);
}
}
删除数组括号和最后一个“\”
给定的文件路径为:
C:\Users\Test\Downloads\048815 - Kopie (2).jpg
C:\Users\Test\Downloads\048815 - Kopie (3).jpg
C:\Users\Test\Downloads\048815 - Kopie (4).jpg
C:\Users\Test\Downloads\048815 - Kopie.jpg
C:\Users\Test\Downloads\048815.jpg
第一个树文件(名称中带有()的文件)不起作用,文件名仍在字符串中并添加到列表中,只有最后两个文件删除了文件名
# 1 楼答案
你眼前的问题是你误用了
String#split()
。split()
的参数是一个正则表达式,其中括号是分组元字符。您根本不想在这里使用split()
。事实上,您最好使用java.nio.file.Path
中的路径操作方法一旦熟悉了API,就可以将其简化为