Javaexamples-dir-size

提供:Dev Guides
移動先:案内検索

Javaの例-ディレクトリサイズ

問題の説明

ディレクトリのサイズを取得する方法は?

溶液

次の例は、FileUtilsクラスのFileUtils.sizeofDirectory(File Name)メソッドを使用してディレクトリのサイズを取得する方法を示しています。

import java.io.File;
import org.apache.commons.io.FileUtils;

public class Main {
   public static void main(String[] args) {
      long size = FileUtils.sizeOfDirectory(new File("C:/Windows"));
      System.out.println("Size: " + size + " bytes");
   }
}

結果

上記のコードサンプルは、次の結果を生成します。

Size: 2048 bytes

以下は、Javaでディレクトリのサイズを取得する別のサンプル例です。

import java.io.File;
import java.util.ArrayList;

public class Main {
   public static void main(String[] args) {
      long folderSize = findSize("C:\\a");
      System.out.println("Size in byte :"+folderSize);
   }
   public static long findSize(String path) {
      long totalSize = 0;
      ArrayList<String> directory = new ArrayList<String>();
      File file = new File(path);

      if(file.isDirectory()) {
         directory.add(file.getAbsolutePath());
         while (directory.size() > 0) {
            String folderPath = directory.get(0);
            System.out.println("Size of this :"+folderPath);
            directory.remove(0);
            File folder = new File(folderPath);
            File[] filesInFolder = folder.listFiles();
            int noOfFiles = filesInFolder.length;

            for(int i = 0 ; i < noOfFiles ; i++) {
               File f = filesInFolder[i];
               if(f.isDirectory()) {
                  directory.add(f.getAbsolutePath());
               } else {
                  totalSize += f.length();
               }
            }
         }
      } else {
         totalSize = file.length();
      }
      return totalSize;
   }
}

上記のコードサンプルは、次の結果を生成します。

Size of this :C:\a
Size of this :C:\a\b
Size of this :C:\a\b\c
Size of this :C:\a\b\c\d
Size in byte :0