FileSystem是JDK对文件系统的抽象,由于jvm会运行在各种文件系统例如windows、linux、macos等,所以当我们执行一些操作,例如读写文件时,每种文件系统的文件路径格式都不相同。FileSystem对提供了对文件系统的一些基本操作,例如获取路径等。

FileSystem提供的方法

FileSystem提供了下面这些方法,其中我们需要重点关注的是getPath方法。它会根据我们给定的参数返回一个该文件系统下的Path。Path我们之后会讲解到。
image.png

获取默认FileSystem

要想获取FileSystem,我们需要用到FileSystems类,这可以看成一个工厂类,用来构造和返回FileSystem。
image.png
它的getDefault方法就能获取当前JVM运行的文件系统。这个方法就是大部分情况下我们会用到的。
我在MAC系统上运行:

  1. public static void main(String[] args) throws FileNotFoundException {
  2. FileSystem fileSystem = FileSystems.getDefault();
  3. System.out.println(fileSystem);
  4. }

输出:

  1. sun.nio.fs.MacOSXFileSystem@5b6f7412

可以看出是跟mac相关的,其实FileSystem是有几个实现类的,只是我们不能直接使用它们,而通过FileSystems.getDefault()就能拿到。
image.png
拿到了当前的文件系统,我们就能使用这个FileSystem的方法,例如可以使用getSeparator()获取路径分隔符,使用getPath方法来获取文件路径。

  1. public abstract String getSeparator();

下面我在mac上执行getSeparator方法:

  1. public static void main(String[] args) throws FileNotFoundException {
  2. FileSystem fileSystem = FileSystems.getDefault();
  3. System.out.println(fileSystem.getSeparator());
  4. }

输出:

  1. /

正是mac上的文件路径分隔符。