Java檔案計算檔案目錄與硬碟空間大小程式

來源:互聯網
上載者:User

java.io.File中有一個listRoots的靜態方法,該方法返回一個指向檔案系統根目錄的File[]。

並通過調用File中的getUsableSpace()和getTotalSpace()方法可以擷取該分區的可用空間大小以及空間的總大小。

測試方法如下:

 代碼如下 複製代碼


import java.io.File;
 
public class FileTest {
     
    private static final File[] rootDirArray = File.listRoots();
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        for(File dir : rootDirArray) {
            System.out.println(dir.getPath());
            long usableSpace = dir.getUsableSpace();
            System.out.println("Usable space = " + usableSpace);
            System.out.println(usableSpace / 1024.0 / 1024.0 / 1024.0 + " G");
             
            long totalSpace = dir.getTotalSpace();
            System.out.println("Total space = " + totalSpace);
            System.out.println(totalSpace / 1024.0 / 1024.0 / 1024.0 + " G");
        }
    }
 
}

需要注意的是這兩個方法返回的數值為long長整形,單位為Byte,Windows系統中1M = 1024Byte.
而一般硬碟、隨身碟廠商使用的換算為1M = 1000Byte,這就是為啥買的8G的隨身碟插在電腦上顯示的空間會小於8G的原因。
..

計算目錄及檔案個數,大小。

 代碼如下 複製代碼

import java.io.File;
import java.text.DecimalFormat;
import java.text.NumberFormat;
public class GetFolderSize {
 int totalFolder = 0;
 int totalFile = 0;
 public static void main(String args[]) {
  String folder = "c:\java";
  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;
 }
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.