Java 文件系统

Java IO教程 - Java文件系统


Java 7引入了新的输入/输出2(NIO.2)API并提供了一个新的 I/O API。

它向Java类库添加了三个包:java.nio.file,java.nio.file.attribute和java.nio.file.spi。

文件系统

FileSystem类的对象表示Java程序中的文件系统。

FileSystem对象用于执行两个任务:

  • Java程序和文件系统之间的接口。
  • 一个工厂用于创建许多类型的文件系统相关对象和服务。

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();
    }
  }
}

上面的代码生成以下结果。