} } }

    文件NIO进修领会

    添加时间:2013-6-17 点击量:

      Files类是java.nio.file包的一个首要进口点,这个类供给了一系列静态的办法来读、写和操控文件或目次,Files的办法工作在Path对象的实例上。



    • 检测文件或目次


    验证一个文件或目次是否存在可以应用exists(Path path,LinkOption[] option)和notExists(Path path,LinkOption[] option)。须要重视的是验证一个文件是否存在可能有三种成果



    1. 文件存在

    2. 文件不存在

    3. 文件状况未知,无法验证


    是以,我们不克不及认为!exists(Path path)与notExists(Path path)是相等的




    • 检测文件的可接见性



    我们可以应用isReadable(Path path)、isWritable(Path path)和isExcutable(Path path)来断定一个文件是否可读、可写和可履行。例如:


    Path file = ...;


    boolean isRegularutableFile = Files.isRegularFile(file) &


    Files.isReadable(file) & Files.isutable(file);




    • 检测两个路径是否定位了同样的文件

      在文件体系中,我们有时须要断定2个路径是否指定了同样的文件,我们可以应用isSameFile(Path path1,Path path2)办法来进行断定。:




    • 删除文件或目次

      须要删除一个文件或目次时,新NIO的Files供给了2个办法来完成这个目标



      1. 应用(Path path),若是删除的文件不存在或删除的目次中包含文件都邑抛出NoSuchFileException或DirectoryNotEmptyException。例如:


      try {


      Files.(path);


      } catch (NoSuchFileException x) {


      System.err.format(%s: no such + file or directory%n, path);


      } catch (DirectoryNotEmptyException x) {


      System.err.format(%s not empty%n, path);


      } catch (IOException x) {


      // File permission problems are caught here.


      System.err.println(x);


      }




                              2、应用IfExists(path)办法删除文件或目次,即使文件存在也被会抛出异常。




    • 拷贝文件或目次

      文件类供给了copy(Path path1,Path path2,CopyOption[] option)来实现文件或目次的拷贝,当目标文件存在时是否抛出异常要按照CopyOption列举值来断定


      其列举值的定义如下:


      REPLACE_EXISTING:该选项默示,即使目标文件存在也履行拷贝,若是要拷贝的是符号链接(Symbolic link)链接本身被拷贝,而链接的目标不会被拷贝,若是拷贝到一个非空目次,FileAlreadyExistsException异常被抛出


      COPY_ATTRIBUTES:该选项默示拷贝源文件相干的所有属性到目标文件,目标文件是否具有源文件拷贝过来的属性取决于响应的体系或平台,然则最后批改时候老是可以正确拷贝,它是跨平台的。


      NOFOLLOW_LINKS:该选项首要用于符号链接(Symbolic link),拷贝的是链接本身,而被是链接的目标。


      此外,文件类还供给了用于文件与流之间的拷贝的办法:copy(InputStream in,Path path,CopyOption[] option)该办法用于拷贝输入流到文件,copy(Path path,OutputStream out)该办法用于拷贝文件到输出流




    • 移动文件或目次

      我们能应用Move(Path path1,Path path2,CopyOption[] option)办法来移动文件或目次,若是目标文件已经存在,是否抛出异常与传递进来的CopyOptin标记有关,空目次和包含文件的目次都可以用该办法来进行移动,只是


      包含文件的目次移动后不再包含文件




    StandardCopyOption参数的含义如下:


    REPLACE_EXISTING: 该选项默示目标文件若是存在持续进行移动并调换,若是移动的是符号链接(Symbolic link),链接会被调换到指向原目标。


    ATOMIC_MOVE:该选项顾名思义,就是操纵要么正确完成,要么失败,不成能项目组完成。


    import static java.nio.file.StandardCopyOption.;


    …...


    Files.move(source, target, REPLACE_EXISTING);


    下一篇文章我们将进修元数据经管(manageing metadata)

    真正的心灵世界会告诉你根本看不见的东西,这东西需要你付出思想和灵魂的劳动去获取,然后它会照亮你的生命,永远照亮你的生命。——王安忆《小说家的十三堂课》
    分享到: