StringBuilder 拆分不适用于某些文件
StringBuilder split not working on some files
我正在尝试获取每个文件的父目录并将其放入 Java fx 中的 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\Downloads8815 - Kopie (2).jpg
C:\Users\Test\Downloads8815 - Kopie (3).jpg
C:\Users\Test\Downloads8815 - Kopie (4).jpg
C:\Users\Test\Downloads8815 - Kopie.jpg
C:\Users\Test\Downloads8815.jpg
第一个树文件,名称中带()的文件不起作用,文件名仍在String中并添加到列表中,只有最后两个文件名被删除。
您的直接问题是您滥用了 String#split()
。 split()
的参数是一个 正则表达式 ,其中括号是分组元字符。您根本不想在这里使用 split()
。事实上,你最好使用 java.nio.file.Path
.
中的路径操作方法
for (String fileName : loadedFiles)
{
Path filePath = Path.of(fileName);
Path directory = filePath.getParent();
ctrl.fileList.getItems().add(directory.toString());
}
一旦您对 API 感到满意,您可以将其减少到
for (String fileName : loadedFiles)
{
ctrl.fileList.getItems().add(Path.of(filename).getParent().toString());
}
我正在尝试获取每个文件的父目录并将其放入 Java fx 中的 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\Downloads8815 - Kopie (2).jpg
C:\Users\Test\Downloads8815 - Kopie (3).jpg
C:\Users\Test\Downloads8815 - Kopie (4).jpg
C:\Users\Test\Downloads8815 - Kopie.jpg
C:\Users\Test\Downloads8815.jpg
第一个树文件,名称中带()的文件不起作用,文件名仍在String中并添加到列表中,只有最后两个文件名被删除。
您的直接问题是您滥用了 String#split()
。 split()
的参数是一个 正则表达式 ,其中括号是分组元字符。您根本不想在这里使用 split()
。事实上,你最好使用 java.nio.file.Path
.
for (String fileName : loadedFiles)
{
Path filePath = Path.of(fileName);
Path directory = filePath.getParent();
ctrl.fileList.getItems().add(directory.toString());
}
一旦您对 API 感到满意,您可以将其减少到
for (String fileName : loadedFiles)
{
ctrl.fileList.getItems().add(Path.of(filename).getParent().toString());
}