文件夹中的Java搜索索引

文件夹中的Java搜索索引,java,indexing,webserver,Java,Indexing,Webserver,我已经写了一个小小的Web服务器应用程序。现在我的问题是,我不知道如何显示索引文件。如何获取目录中以索引开头的第一个文件?无论哪个文件扩展名。我使用新文件(“Path/To/dir”)获取目录 请帮帮我 问候语您可以使用文件#list()方法 // your directory in which you look for index* files File directory = new File("."); // note that indexFileNames may

我已经写了一个小小的Web服务器应用程序。现在我的问题是,我不知道如何显示索引文件。如何获取目录中以索引开头的第一个文件?无论哪个文件扩展名。我使用
新文件(“Path/To/dir”)获取目录

请帮帮我


问候语

您可以使用
文件#list()
方法

    // your directory in which you look for index* files
    File directory = new File(".");
    // note that indexFileNames may be null
    String[] indexFileNames = directory.list(new FilenameFilter() {
        public boolean accept(File dir, String name) {
            return name.startsWith("index");
        }
    });
    if (indexFileNames != null) {
        for (String name : indexFileNames) {
            System.out.println(name);
        }
    }
这将查找名称以
索引
前缀开头的所有文件

请注意,
list()
方法返回文件和目录的名称。如果您只需要文件,可以扩充
FilenameFilter
逻辑

要获取这些文件中的第一个,需要定义一些顺序。例如,如果需要按文件名按字母顺序(区分大小写)对文件进行排序,可以执行以下操作:

    if (indexFileNames != null) {
        // sorting the array first
        Arrays.sort(indexFileNames);
        // picking the first of them
        if (indexFileNames.length > 0) {
            String firstFileName = indexFileNames[0];
            // ... do something with it
        }
    }
如果需要特殊订单,也可以使用比较器进行排序:

Arrays.sort(indexFileNames, comparator);
另一种方法是避免排序并使用
集合#min()
方法:

if (indexFileNames.length > 0) {
    String firstFileName = Collections.min(Arrays.asList(indexFileNames));
    // ... process it
}

Collections#min()
还有一个带有
Comparator
的版本,您可以使用
文件#列表()
方法

    // your directory in which you look for index* files
    File directory = new File(".");
    // note that indexFileNames may be null
    String[] indexFileNames = directory.list(new FilenameFilter() {
        public boolean accept(File dir, String name) {
            return name.startsWith("index");
        }
    });
    if (indexFileNames != null) {
        for (String name : indexFileNames) {
            System.out.println(name);
        }
    }
这将查找名称以
索引
前缀开头的所有文件

请注意,
list()
方法返回文件和目录的名称。如果您只需要文件,可以扩充
FilenameFilter
逻辑

要获取这些文件中的第一个,需要定义一些顺序。例如,如果需要按文件名按字母顺序(区分大小写)对文件进行排序,可以执行以下操作:

    if (indexFileNames != null) {
        // sorting the array first
        Arrays.sort(indexFileNames);
        // picking the first of them
        if (indexFileNames.length > 0) {
            String firstFileName = indexFileNames[0];
            // ... do something with it
        }
    }
如果需要特殊订单,也可以使用比较器进行排序:

Arrays.sort(indexFileNames, comparator);
另一种方法是避免排序并使用
集合#min()
方法:

if (indexFileNames.length > 0) {
    String firstFileName = Collections.min(Arrays.asList(indexFileNames));
    // ... process it
}

Collections#min()
还有一个版本带有
Comparator

以及如何获取第一个元素?我已经用关于选择“第一个”元素的附加信息更新了答案,以及如何获取第一个元素?我已经用关于选择“第一个”元素的附加信息更新了答案