天天看点

Java NIO 文件系统:FileSystem类1、FileSystem实例的获取:2、FileSystem类的方法:

    FileSystem类提供文件系统的接口,是用于访问文件系统中的文件和其他对象的工厂类。

1、FileSystem实例的获取:

    FileSystem定义了protected权限的构造器,所以用户不能通过new关键字直接构造FileSystem的实例。在FileSystems类中,定义了一系列获取FileSystem实例的方法:

    1)getDefault():返回默认的文件系统,默认的文件系统,创建的对象可以提供对“能被JVM访问的文件系统”的访问,它的工作目录是系统属性"user.dir"指定的目录,允许和File类的互操作性。

    2)getFileSystem(URI uri):返回一个指向已存在的FileSystem的引用。如果找不到对应的已存在的FileSystem,则会抛出异常ProviderNotFoundException。

    3)newFileSystem(URI uri, Map<String,?> env):根据URI创建一个信息文件系统。遍历已安装的FileSystemProvider实例们,并根据uri的scheme (不区分大小写)从中找到对应的供应者。如果能找到,就调用该provider的相应方法去创建FileSystem;否则会抛出异常ProviderNotFoundException。

    一旦文件系统关闭,根据provider的具体实现来决定,是否允许重新根据这个URI的scheme来创建一个文件系统。

    4)newFileSystem(URI uri, Map<String,?> env, ClassLoader loader):和上面的方法比,如果找不到对应的provider,会在抛出异常前先尝试根据给定的ClassLoader去定位provider。

    5)newFileSystem(Path path, ClassLoader loader):构建一个文件系统去访问path指定的文件的内容。这个方法使用的是专门用来创建虚拟文件系统的providers,在它们创建的虚拟文件系统中一个或多个文件的内容被像文件系统一样对待。(这个地方翻译出来很奇怪,请参考JDK中的介绍:This method makes use of specialized providers that create pseudo file systems where the contents of one or more files is treated as a file system)。

2、FileSystem类的方法:

    1)getFileStores():返回一个Iterable<FileStore>,用来遍历该文件系统的各个FileStore。

    2)getPath(String first,String... more):将字符串拼接成一个路径,并根据路径生成Path的实例。作用和Paths的get(String first,String... more)方法基本类似。

    3)getPathMatcher(String syntaxAndPattern):返回一个 

PathMatcher。

    4)getRootDirectories():返回一个Iterable<Path>,用来遍历根目录的路径。代码示例:

FileSystem fileSystem = FileSystems.getDefault();
Iterator<Path> iterator1 = fileSystem.getRootDirectories().iterator();
while (iterator1.hasNext()){
    System.out.println(iterator1.next());
}

console: /
           

    5)getSeparator():返回名称分隔符,字符串形式。代码示例:

FileSystem fileSystem = FileSystems.getDefault();
System.out.println(fileSystem.getSeparator());

console: /
           

    6)getUserPrincipalLookupService():返回该文件系统的 

UserPrincipalLookupService

(可选操作)。由此产生的查找服务可用于查找用户或组名。

    7)isOpen():判断文件系统是否已经打开了。

    8)isReadOnly():判断这个文件系统的file stores是只读的。

    9)newWatchService():构建了一种新的 WatchService(可选操作)。此方法构造了一个新的监视服务,该服务可用于监视更改和事件的注册对象。

    10)provider():返回创建此文件系统的提供者(FileSystemProvider)。

    11)supportedFileAttributeViews():返回文件的属性视图支持这 

FileSystem

的names集。

    12)close():关闭此文件系统。如果文件系统已经关闭,则调用该方法没有效果。