试图获取最大文件的文件名

时间:2015-11-19 07:03:15

标签: java

所以我现在正在学习递归,我知道如何在JFileChooser中选择的文件夹中获取最大的文件大小。

我不能为我的生活找不到如何获得该文件的名称。这是获取largestFileSize的方法。我如何获得该文件的名称?

public static long largestFileSize(File f) {
    if (f.isFile()) {
        return f.length();
    } else {
        long largestSoFar = -1;

        for (File file : f.listFiles()) {
            largestSoFar = Math.max(largestSoFar, largestFileSize(file));
        }
        return largestSoFar;
    }
}

2 个答案:

答案 0 :(得分:6)

String fileName = file.getName()

由于返回文件大小和名称是不切实际的,为什么不返回文件,然后从中获取文件的大小和名称?

public static File largestFile(File f) {
    if (f.isFile()) {
        return f;
    } else {
        File largestFile = null;

        for (File file : f.listFiles()) {
            // only recurse largestFile once
            File possiblyLargeFile = largestFile(file);
            if (possiblyLargeFile != null) {
                if (largestFile == null || possiblyLargeFile.length() > largestFile.length()) {
                    largestFile = possiblyLargeFile;
                }
            }
        }
        return largestFile;
    }
}

然后你可以这样做:

String largestFileName = largestFile(file).getName();
long largestFileSize = largestFile(file).length();

编辑:返回任何子目录中的最大File。如果子目录中不存在任何文件,则返回null

答案 1 :(得分:1)

只做

    The push refers to a repository [192.168.1.98:5000/complete] (len: 1)
Sending image list
Error: Status 405 trying to push repository complete: "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<html><head>\n<title>405 Method Not Allowed</title>\n</head><body>\n<h1>Method Not Allowed</h1>\n<p>The requested method PUT is not allowed for the URL /v1/repositories/complete/.</p>\n</body></html>\n"

然后致电:

public static File largestFile(File f) {
    if (f.isFile()) {
        return f;
    } else {
        long largestSoFar = -1;
        File largestFile = null;
        for (File file : f.listFiles()) {
            file = largestFile(file);
            if (file != null) {
                long newSize = file.length();
                if (newSize > largestSoFar) {
                    largestSoFar = newSize;
                    largestFile = file;
                }
            }
        }
        return largestFile;
    }
}