有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java:如何将保存在同一路径上的多个文件夹中的最大名称提取到一个文件夹名称都是数字的变量中?

有一个包含许多文件夹的目录。文件夹名称都是数字。在java中,如何将具有最大值的文件夹名提取到整数变量中

例如:假设目录.../home/user有以下文件夹:

.../home/user/19620918

.../home/user/19620919

.../home/user/19620920

如何使用最简单和最有效的代码获取x = 19620920,其中x是整数变量


共 (1) 个答案

  1. # 1 楼答案

    使用Files.list(),可以使用以下方法:

    public static OptionalInt getMaxNumericFilename(Path path) {
        try (Stream<Path> files = Files.list(path)) {
            return files
                .filter(Files::isDirectory)
                .map(Path::getFileName)
                .map(Path::toString)
                .mapToInt(Integer::parseInt)
                .max();
        } catch (IOException e) {
            return OptionalInt.empty();
        }
    }
    

    用法示例:

    Path path = Path.of(".../home/user");
    
    OptionalInt max = getMaxNumericFilename(path);
    System.out.println(max.getAsInt());
    

    如果OptionalInt为空,则不存在目录。如果要添加额外的弹性,可以在使用Integer::parseInt进行解析之前过滤文件名是否为int,这可能会引发异常

    此解决方案适用于Integer.MAX_VALUE(2.147.483.647)以下的文件名编号。如果需要,考虑使用{{CD6}}或^ {CD7}}。