Java NIO文件管理:Files类的常用方法

版权声明:转载请注明链接 https://blog.csdn.net/weixin_38569499/article/details/84992231

    有人说Path是用来替换File的,实际上Path只具备File的部分功能,Path只是用来管理文件路径的。但是Files和Path结合使用,可以更好的完成File原有的功能。

1、类介绍:

    Files类 是JDK1.7中定义的静态工具类,包含对文件,目录或其他类型文件进行操作的静态方法。在大多数情况下,Files中定义的方法将委托给相关的文件系统提供程序(file system provider)来执行文件操作。JDK中的介绍:This class consists exclusively of static methods that operate on files, directories, or other types of files.

    Path接口 是JDK1.7中定义的接口,主要用来在文件系统中定位文件,通常表示系统相关的文件路径。JDK中的介绍:An object that may be used to locate a file in a file system. It will typically represent a system dependent file path.

    Path主要用来管理文件路径,对Path不熟悉的读者,可以参考:Path类和Paths类

2、Files类主要方法

    Files类是静态工具类,使用的时候直接调用静态方法即可,不需要获取实例。所以,这里直接介绍Files类的方法。这里按方法的第一个单词,划分一个个的系列分别来介绍强大的Files类的静态方法。

2.1 复制文件内容

1) long copy(InputStream in, Path target, CopyOption... options):

    作用:将所有字节从输入流in复制到文件target。

    注意事项:默认情况,如果目标文件已经存在或是一个符号链接,则复制失败;指定了REPLACE_EXISTING的情况,如果目标文件已经存在,那么只要它不是一个非空目录(例如它是一个空目录,或者是一个符号链接),它就会被替换。截止到JDK1.8,options只支持REPLACE_EXISTING

    返回值:复制的字节长度。

2)long copy(Path source, OutputStream out):

    作用:将从文件的所有字节复制到输出流。

    注意事项:

        1)当发生异常的时候,由于输出了可能已经获取到了一部分内容(但不一定是全部,甚至获取到全部内容的可能性应该很小很小),所以输出流此时的内容可能很奇怪,应该直接关闭。

        2)如果输出流是Flushable的实现类的实例,在执行完方法以后应该调用flush方法以刷新缓存。

    返回值:复制的字节长度。

3)Path copy(Path source, Path target, CopyOption... options):

    作用:将一个文件复制到目标文件。

    注意事项:

        所有情况下,如果source和target是一个文件,复制操作都不会执行。

        默认情况:如果目标文件已经存在,或者是一个符号链接,那么复制失败;

        REPLACE_EXISTING:如果目标文件已经存在,那么只要它不是一个非空目录(例如它是一个空目录,或者是一个符号链接),它就会被替换。

        COPY_ATTRIBUTES:把source的文件属性复制给target,被复制的属性取决于平台和文件系统,但是至少在source和target都支持的情况下,会复制最新修改时间。

        NOFOLLOW_LINKS:直接复制符号链接自身,而不是符号链接指向的目的地。可被复制的属性也会被复制,也就是说NOFOLLOW_LINKS的情况下配置COPY_ATTRIBUTES是没有意义的。

2.2 创建文件/目录/符号链接

1)Path createDirectories(Path dir, FileAttribute<?>... attrs):

    作用:创建目录,并设置属性。如果父目录不存在,全部创建。

    注意事项:如果传入的文件属性不支持创建的时候,会自动设置;如果目标目录已经存到但是不是文件夹,会抛出异常。

2)Path createDirectory(Path dir, FileAttribute<?>... attrs):

    作用:创建目录,并设置属性

    注意事项:需要有父路径的情况下才能使用。

3)Path createTempDirectory(Path dir, Path dir, FileAttribute<?>... attrs):

    作用:

4)Path createTempDirectory(Path dir, FileAttribute<?>... attrs):

    作用:

5)Path createFile(Path path, FileAttribute<?>... attrs):

    作用:

6)Path createTempFile(Path dir, String prefix, String suffix, FileAttribute<?>... attrs):

    作用:

7)Path createTempFile(String prefix, String suffix, FileAttribute<?>... attrs):

    作用:

8)Path createLink(Path link, Path existing):

    作用:

9)Path createSymbolicLink(Path link, Path target, FileAttribute<?>... attrs):

    作用:

2.3 文件删除

1)void delete(Path path):

    作用:如果目标存在,并且是文件或者空的文件夹,就删除文件并返回true;如果目标不存在,或者目标是非空的文件夹,就会抛出异常。

2)boolean deleteIfExists(Path path):

    作用:如果目标存在,并且是文件或者空的文件夹,就删除文件并返回true;如果目标不存在,就返回false;如果目标是非空的文件夹,就抛出异常。

3)boolean exists(Path path, LinkOption... options):

    作用:测试文件是否存在

猜你喜欢

转载自blog.csdn.net/weixin_38569499/article/details/84992231