Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取文件夹大小_Java_File Io - Fatal编程技术网

Java 获取文件夹大小

Java 获取文件夹大小,java,file-io,Java,File Io,你知道如何用Java获得文件夹大小吗 File类中的length()方法仅适用于文件,使用该方法我总是得到0的大小。文件夹通常有一个非常小的“大小”,您可以将其视为索引 所有返回文件夹“大小”的程序实际上都会迭代并累加文件的大小。迭代文件夹中的所有子文件夹,并获取其中所有文件的摘要大小。导入java.io.File; import java.io.File; public class GetFolderSize { int totalFolder = 0; int total

你知道如何用Java获得文件夹大小吗


File类中的length()方法仅适用于文件,使用该方法我总是得到0的大小。

文件夹通常有一个非常小的“大小”,您可以将其视为索引


所有返回文件夹“大小”的程序实际上都会迭代并累加文件的大小。

迭代文件夹中的所有子文件夹,并获取其中所有文件的摘要大小。

导入java.io.File;
import java.io.File;

public class GetFolderSize {

    int totalFolder = 0;
    int totalFile = 0;

    public static void main(String args[]) {
        String folder = "C:/GetExamples";
        try {
            GetFolderSize size = new GetFolderSize();
            long fileSizeByte = size.getFileSize(new File(folder));
            System.out.println("Folder Size: " + fileSizeByte + " Bytes");
            System.out.println("Total Number of Folders: "
                + size.getTotalFolder());
            System.out.println("Total Number of Files: " + size.getTotalFile());
        } catch (Exception e) {}
    }

    public long getFileSize(File folder) {
        totalFolder++;
        System.out.println("Folder: " + folder.getName());
        long foldersize = 0;
        File[] filelist = folder.listFiles();
        for (int i = 0; i < filelist.length; i++) {
            if (filelist[i].isDirectory()) {
                foldersize += getFileSize(filelist[i]);
            } else {
                totalFile++;
                foldersize += filelist[i].length();
            }
        }
        return foldersize;
    }

    public int getTotalFolder() {
        return totalFolder;
    }

    public int getTotalFile() {
        return totalFile;
    }
}
公共类GetFolderSize{ int totalFolder=0; int totalFile=0; 公共静态void main(字符串参数[]){ String folder=“C:/GetExamples”; 试一试{ GetFolderSize size=新的GetFolderSize(); long fileSizeByte=size.getFileSize(新文件(文件夹)); System.out.println(“文件夹大小:“+fileSizeByte+”字节”); System.out.println(“文件夹总数:” +size.getTotalFolder()); System.out.println(“文件总数:+size.getTotalFile()); }捕获(例外e){} } 公共长getFileSize(文件文件夹){ totalFolder++; System.out.println(“文件夹:“+Folder.getName()); 长foldersize=0; File[]filelist=folder.listFiles(); for(int i=0;i
使用apache commons io,有一个
FileUtils
类带有
sizeOfDirectory
方法

简单地递归迭代所有子文件夹会有一个小错误。在某些文件系统上,可以使用符号链接创建循环目录结构,如下所示:

mkdir -- parents father/son
ln -sf ${PWD}/father father/son
ls father/son/father/son/father/son/father/son/
为了防止此错误,可以使用java.io.File#getCanonicalPath方法。下面的代码是对a的轻微修改

public static long getFileSize(文件夹)引发IOException{
return(getFileSize(文件夹,新HashSet());
}
公共静态长getFileSize(文件夹,设置历史记录)
抛出IOException{
长foldersize=0;
File[]filelist=folder.listFiles();
for(int i=0;i
公共类目录大小{
公共静态void main(字符串[]args){
//提示用户输入目录或文件
System.out.print(“请输入目录或文件:”);
扫描仪输入=新扫描仪(System.in);
String directory=input.nextLine();
//显示大小
System.out.println(getSize(新文件(目录))+“字节”);
}
公共静态长getSize(文件){
long size=0;//存储所有文件的总大小
if(file.isDirectory()){
File[]files=File.listFiles();//所有文件和子目录
对于(int i=0;i

}

逐个文件浏览文件夹,获取每个文件的大小,并将其添加到可变大小中

static int size=0;

 public static int folderSize(File folder){

    size = 0;

    File[] fileList = folder.listFiles();

    for(File file : fileList){
        if(!file.isFile()){ 
            folderSize(file);
        }
        size += file.length();
    }
    return size;
}

您希望文件夹的“大小”是多少?文件系统中文件夹的实际大小或其中所有文件的大小?此方法存在严重问题。它可以在聚合文件大小时引发IllegalArgumentException。请参阅@Fhl提到的bug已从commons io库的2.5版中修复。警告,此方法存在严重问题,在运行时可能引发IllegalArgumentException。看到@Fhl提到的bug已经从commons io库的2.5版中修复。@Ozuf你能链接到变更日志/源吗?Thanks@Fhl它就在上面粘贴的链接中。
import java.io.File;
import org.apache.commons.io.FileUtils;

public class FolderSize
{
  public static void main(String[] args)
   {
    long size = FileUtils.sizeOfDirectory(new File("C:/Windows/folder"));

    System.out.println("Folder Size: " + size + " bytes");
   }
}
public class DirectorySize {
   public static void main(String[] args) {
          // Prompt the user to enter a directory or a file
          System.out.print("Please Enter a Directory or a File: ");
          Scanner input = new Scanner(System.in);
          String directory = input.nextLine();

          // Display the size
          System.out.println(getSize(new File(directory)) + " bytes");
   }

   public static long getSize(File file) {
           long size = 0; // Store the total size of all files

           if (file.isDirectory()) {
                  File[] files = file.listFiles(); // All files and subdirectories
                  for (int i = 0; i < files.length; i++) {
                         size += getSize(files[i]); // Recursive call
               }
           }
           else { // Base case
                  size += file.length();
           }

           return size;
   }
static int size=0;

 public static int folderSize(File folder){

    size = 0;

    File[] fileList = folder.listFiles();

    for(File file : fileList){
        if(!file.isFile()){ 
            folderSize(file);
        }
        size += file.length();
    }
    return size;
}