gpt4 book ai didi

java - 连接完整文件路径时仅显示文件名列表

转载 作者:行者123 更新时间:2023-12-02 03:51:34 29 4
gpt4 key购买 nike

我希望能够显示文件列表,仅显示文件名而不是整个文件路径。

目前我有一个文件列表。当我单击这些文件之一时,监听器会将其传递给加载该文件的超出范围的方法。

这意味着如果我只是向它传递一个仅包含文件名的列表,它将不再起作用,因为我的监听器需要完整的文件路径。我不知道如何存储文件名列表,同时将它们链接到完整文件路径。

很高兴回答您的任何问题。非常感谢,

注意:小 for 循环显示了我如何从文件路径中提取文件名,但目前我没有对其进行任何操作。这只是一个例子,向您展示我已经走了多远。

public void GetFilesFromFolder(String dirName) throws IOException {
File dir = new File(dirName);
File[] files = dir.listFiles((File dir1, String filename) -> filename.endsWith(".mp3"));
String[] fileName = new String[files.length];
int x = 0;
for (File file : files) {
String fileTemp = file.toString();
fileTemp = fileTemp.substring(fileTemp.lastIndexOf("\\" + 1));
System.out.println(fileTemp);
fileName[x] = fileTemp;
System.out.println(fileName[x]);
x++;
}
observableList.clear();
observableList.addAll(files);
}

public void SetFileListView() throws IOException {
listView.setItems(null);
}

public VBox listStack() throws IOException {
vbox = new VBox();
vbox.getChildren().add(listView);

listView.setItems(observableList);
listView.setMinHeight(500);
MusicDataModel mdm = MainView.getMainView().musicDataModel;
MusicDataViewController mdv = MainView.getMainView().musicDataViewController;
listView.getSelectionModel().selectedItemProperty().addListener((ObservableValue<? extends File> observable, File oldValue, File newValue) -> {
try {
mdm.load(newValue.toString());
mdv.SetValues();
} catch (UnsupportedTagException | InvalidDataException | IOException | NotSupportedException ex) {
Logger.getLogger(FileListView.class.getName()).log(Level.SEVERE, null, ex);
}
});
return vbox;
}

最佳答案

使用文件填充 ListView ,就像您当前所做的那样,并在 ListView 上使用单元工厂来更改文件的显示方式:

listView.setCellFactory(lv -> new ListCell<File>() {
@Override
protected void updateItem(File file, boolean empty) {
super.updateItem(file, empty);
setText(file == null ? null : file.getName());
}
});

这将确保 ListView 中的每个单元格仅显示文件名(文件完整路径的最后一个组成部分),尽管它仍然保留 File 实例作为其数据(因此您仍然可以获取所选的文件等)。

关于java - 连接完整文件路径时仅显示文件名列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35834606/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com