我的代码按大小在目录中搜索必要的文件,以“卷+文件路径”的格式输出它们,我无法将输出配置为按文件大小(从最大到最小)排序的控制台,并且我还需要考虑到不同的文件,体积以不同的单位显示(字节,兆字节等)将ArrayList更改为TreeSet,并且还尝试添加Collections.sort(testList); collections.reverse(testList); 但没有帮助
import java.io.File;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class Main{
public static final double MIN_LENGTH = 700; //размер файла в байтах
public static void main(String[] args) {
ArrayList<File> fileList = new ArrayList<>();
getFiles(new File("C:/Users/Desktop"), fileList);
for(File file: fileList) {
if(file.length()>= 1073741824) {
System.out.printf("%s Gb %s%n", file.length() / 1073741824, file); // в гигабайтах
} else if(file.length()>= 1048576) {
System.out.printf("%s Mb %s%n", file.length() / 1048576, file); // в мегабайтах
} else if (file.length()>= 1024){
System.out.printf("%s Kb %s%n", file.length() / 1024, file); // выводит в килобайтах объем
} else if (file.length()< 1024){
System.out.printf("%s B %s%n", file.length(), file); // в байтах
} else {
System.out.printf("%s Gb %s%n", file.length() / (1073741824 * 1024), file); // в терабайтах
}
}
}
private static void getFiles(File rootFile, List<File> fileList) {
if (rootFile.isDirectory()) {
File[] directoryFiles = rootFile.listFiles();
if (directoryFiles != null) {
for (File file: directoryFiles) {
if (file.isDirectory()) {
getFiles(file, fileList);
} else {
if (file.isFile() && file.length() >= MIN_LENGTH) {
fileList.add(file);
}
}
}
}
}
}
}
从 Java 8 开始,可以使用方法对列表进行排序
List::sort,该方法需要按文件大小传递给比较器:同样,您可以将比较器传递给方法
Collections.sort: