Java檔案系統


Java7 引入了新的輸入/輸出2(NIO.2)API並提供了一個新的I/O API。

它向Java類庫新增了三個包:java.nio.filejava.nio.file.attributejava.nio.file.spi

檔案系統

FileSystem類的物件表示Java程式中的檔案系統。FileSystem物件用於執行兩個任務:

  • Java程式和檔案系統之間的介面。
  • 一個工廠,它用於建立許多型別的檔案系統相關物件和服務。

FileSystem物件與平台相關。

建立檔案系統

要獲取預設的FileSystem物件,需要使用FileSystems類的getDefault()靜態方法,如下所示:

FileSystem fs  = FileSystems.getDefault();

FileSystem由一個或多個FileStore組成。FileSystemgetFileStores()方法返回FileStore物件的疊代器(Iterator)。
FileSystemgetRootDirectories()方法返回Path物件的疊代器,它表示到所有頂級目錄的路徑。
FileSystemisReadOnly()方法判斷是否獲得檔案儲存的唯讀存取許可權。例
以下程式碼顯示如何使用FileSystem物件。

import java.nio.file.FileStore;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.io.IOException;

public class Main {
  public static void main(String[] args) {
    FileSystem fs = FileSystems.getDefault();

    System.out.println("Read-only file system: " + fs.isReadOnly());
    System.out.println("File name separator: " + fs.getSeparator());

    for (FileStore store : fs.getFileStores()) {
      printDetails(store);
    }
    for (Path root : fs.getRootDirectories()) {
      System.out.println(root);
    }
  }

  public static void printDetails(FileStore store) {
    try {
      String desc = store.toString();
      String type = store.type();
      long totalSpace = store.getTotalSpace();
      long unallocatedSpace = store.getUnallocatedSpace();
      long availableSpace = store.getUsableSpace();
      System.out.println(desc + ", Total: " + totalSpace + ",  Unallocated: "
          + unallocatedSpace + ",  Available: " + availableSpace);
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

上面的程式碼生成以下結果(不同的環境可能結果不太一樣)。

Read-only file system: false
File name separator: \
System (C:), Total: 53694595072,  Unallocated: 9739976704,  Available: 9739976704
Software (D:), Total: 149264121856,  Unallocated: 50061234176,  Available: 50061234176
Documents (E:), Total: 149264121856,  Unallocated: 75025080320,  Available: 75025080320
Others (F:), Total: 147882274816,  Unallocated: 57207463936,  Available: 57207463936
C:\
D:\
E:\
F:\