Java7 引入了新的輸入/輸出2(NIO.2)API並提供了一個新的I/O API。
它向Java類庫新增了三個包:java.nio.file
,java.nio.file.attribute
和java.nio.file.spi
。
FileSystem
類的物件表示Java程式中的檔案系統。FileSystem
物件用於執行兩個任務:
FileSystem
物件與平台相關。
要獲取預設的FileSystem
物件,需要使用FileSystems
類的getDefault()
靜態方法,如下所示:
FileSystem fs = FileSystems.getDefault();
FileSystem
由一個或多個FileStore
組成。FileSystem
的getFileStores()
方法返回FileStore
物件的疊代器(Iterator
)。FileSystem
的getRootDirectories()
方法返回Path
物件的疊代器,它表示到所有頂級目錄的路徑。FileSystem
的isReadOnly()
方法判斷是否獲得檔案儲存的唯讀存取許可權。例
以下程式碼顯示如何使用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:\