gpt4 book ai didi

Java FileFilter 选择某些目录

转载 作者:行者123 更新时间:2023-12-02 06:05:38 25 4
gpt4 key购买 nike

我正在尝试创建一个文件过滤器,它只允许用户打开包含特定文件的目录。用例是这些目录是工作区,内部有一个名为 smart.workspace 的文件。

目前我的过滤器如下...

class SMARTWorkspaceFilter extends javax.swing.filechooser.FileFilter {

String description = "SMART Workspace";
String fileNameFilter = "smart.workspace";

SMARTWorkspaceFilter() {

}

@Override
public boolean accept(File file) {

log.debug("Testing file: " + file.getName());

if (file.isFile()) {
return false;
}

if (file.isDirectory()) {
File[] files = file.listFiles();
for (File f : files) {

log.debug("Directory: " + f.isDirectory());
log.debug("Name: " + f.getName());

if (f.isDirectory()) {
return true;
}

if (f.getName().equals(fileNameFilter)) {
return true;
}
}
}
return false;
}

@Override
public String getDescription() {
return description;
}
}

显然我的问题是,为了允许用户导航到工作区文件夹,我必须允许子目录。

对于文件选择器,我使用选项DIRECTORIES_ONLY

是否可以只允许用户根据目录内容选择目录?

例如,目录“工作空间”存在于 C://Folder1/Folder2/wokspace,我希望允许 FileChooser 在 C://处“启动”并允许用户导航到“工作空间”文件夹并接受它。 FileChooser 不应允许接受Folder1 或Folder2,但仍允许通过Folder1 和Folder2 进行导航。

最佳答案

我认为您无法使 FileFilter 区分“应该显示且可以访问的文件/目录”和“可以选择的文件/目录”。

我想到的问题解决方案是:让用户搜索/选择 smart.workspace 文件,然后从那里导航到父文件夹。

如果您需要对话框完全按照上面的描述进行操作,您将必须详细参与 JFileChooser 。希望扩展该类可以为您提供足够的访问权限来根据需要更改行为。

关于Java FileFilter 选择某些目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22302199/

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