首页 > 解决方案 > 我不知道如何更改我的程序,以便我可以看到十个最大的文件

问题描述

我需要编写一些统计数据,例如计数文件等。但其中一项任务有问题:编写代码来识别 10 个最大的文件。

我的问题是我不知道如何开始。我有代码来获取最大的文件。但是我怎样才能得到最大的十个文件呢?这是一个显示最大文件的类。

@Override
public String getDescription() {
   return "find largest file";
}

@Override
public void printResults(List<File> files) {
    File largest = files.get(0);
    for (File f : files)
    if (f.length() > largest.length())
    largest = f;
    System.out.println("Largest file: " + largest.getName() + " (" + largest.length() + " bytes)");
}

标签: javafile

解决方案


您可以按文件大小对文件进行排序并获取前 10 个元素。请注意,如果您的任何文件非常大,您将使用此代码得到奇怪的结果:

@Override
public void printResults(List<File> files) {
    files.sort((file1,file2) -> (int)(file1.length()-file2.length())); // This will NOT work correctly if any of the files are over 2.7 GB in size.
    List<File> largest = files.subList(0, files.size() > 10 ? 10 : files.size());
    System.out.println("Largest files:");
    for(File file : largest) {
        System.out.println(file.getName() + " (" + file.length() + " bytes)");
    }
}

推荐阅读