zoukankan      html  css  js  c++  java
  • 6.NIO2-Path、Paths、Files

    NIO.2

    jdk1.7中,java对 NIO 极大的扩展,主要增强的是对文件处理 和 文件系统特性的支持

    关于其中一些API的使用

      1 public class TestNIO_2_Path_File {
      2     
      3     //自动资源管理:自动关闭实现 AutoCloseable 接口的资源
      4     /*@Test
      5         public void test8(){
      6             try(FileChannel inChannel = FileChannel.open(Paths.get("1.jpg"), StandardOpenOption.READ);
      7                     FileChannel outChannel = FileChannel.open(Paths.get("2.jpg"), StandardOpenOption.WRITE, StandardOpenOption.CREATE)){
      8                 
      9                 ByteBuffer buf = ByteBuffer.allocate(1024);
     10                 inChannel.read(buf);
     11                 
     12             }catch(IOException e){
     13                 
     14             }
     15         }*/
     16     
     17     /*
     18     Files常用方法:用于操作内容
     19         SeekableByteChannel newByteChannel(Path path, OpenOption…how) : 获取与指定文件的连接,how 指定打开方式。
     20         DirectoryStream newDirectoryStream(Path path) : 打开 path 指定的目录
     21         InputStream newInputStream(Path path, OpenOption…how):获取 InputStream 对象
     22         OutputStream newOutputStream(Path path, OpenOption…how) : 获取 OutputStream 对象
     23      */
     24     @Test
     25     public void test7() throws IOException{
     26         SeekableByteChannel newByteChannel = Files.newByteChannel(Paths.get("1.jpg"), StandardOpenOption.READ);
     27         
     28         DirectoryStream<Path> newDirectoryStream = Files.newDirectoryStream(Paths.get("e:/"));
     29         
     30         for (Path path : newDirectoryStream) {
     31             System.out.println(path);
     32         }
     33     }
     34     
     35     /*
     36     Files常用方法:用于判断
     37         boolean exists(Path path, LinkOption … opts) : 判断文件是否存在
     38         boolean isDirectory(Path path, LinkOption … opts) : 判断是否是目录
     39         boolean isExecutable(Path path) : 判断是否是可执行文件
     40         boolean isHidden(Path path) : 判断是否是隐藏文件
     41         boolean isReadable(Path path) : 判断文件是否可读
     42         boolean isWritable(Path path) : 判断文件是否可写
     43         boolean notExists(Path path, LinkOption … opts) : 判断文件是否不存在
     44         public static <A extends BasicFileAttributes> A readAttributes(Path path,Class<A> type,LinkOption... options) : 获取与 path 指定的文件相关联的属性。
     45      */
     46     
     47     @Test
     48     public void test6() throws IOException{
     49         Path path = Paths.get("1.jpg");
     50 //        System.out.println(Files.exists(path, LinkOption.NOFOLLOW_LINKS));
     51         
     52         BasicFileAttributes readAttributes = Files.readAttributes(path, BasicFileAttributes.class, LinkOption.NOFOLLOW_LINKS);
     53         System.out.println(readAttributes.creationTime());
     54         System.out.println(readAttributes.lastModifiedTime());
     55         
     56         DosFileAttributeView fileAttributeView = Files.getFileAttributeView(path, DosFileAttributeView.class, LinkOption.NOFOLLOW_LINKS);
     57         
     58         fileAttributeView.setHidden(false);
     59     }
     60     
     61     /*
     62     Files常用方法:
     63         Path copy(Path src, Path dest, CopyOption … how) : 文件的复制
     64         Path createDirectory(Path path, FileAttribute<?> … attr) : 创建一个目录
     65         Path createFile(Path path, FileAttribute<?> … arr) : 创建一个文件
     66         void delete(Path path) : 删除一个文件
     67         Path move(Path src, Path dest, CopyOption…how) : 将 src 移动到 dest 位置
     68         long size(Path path) : 返回 path 指定文件的大小
     69      */
     70     
     71     @Test
     72     public void test5() throws IOException{
     73         Path path2 = Paths.get("E:/jucAndnioCode/NIO/1.jpg");
     74         
     75         System.out.println(Files.size(path2));
     76         
     77 //        Files.move(path1, path2, StandardCopyOption.ATOMIC_MOVE);
     78     }
     79     
     80     @Test
     81     public void test4() throws IOException{
     82         Path dir = Paths.get("e:/nio/nio2");
     83 //        Files.createDirectory(dir);
     84         
     85         Path file = Paths.get("E:/jucAndnioCode/NIO/1.jpg");
     86 //        Files.createFile(file);
     87         
     88         Files.deleteIfExists(file);
     89     }
     90     
     91     @Test
     92     public void test3() throws IOException{
     93         Path path1 = Paths.get("1.jpg");
     94         Path path2 = Paths.get("4.jpg");
     95         
     96         Files.copy(path1, path2, StandardCopyOption.REPLACE_EXISTING);
     97     }
     98     
     99     /*
    100     Paths 提供的 get() 方法用来获取 Path 对象:
    101         Path get(String first, String … more) : 用于将多个字符串串连成路径。
    102     Path 常用方法:
    103         boolean endsWith(String path) : 判断是否以 path 路径结束
    104         boolean startsWith(String path) : 判断是否以 path 路径开始
    105         boolean isAbsolute() : 判断是否是绝对路径
    106         Path getFileName() : 返回与调用 Path 对象关联的文件名
    107         Path getName(int idx) : 返回的指定索引位置 idx 的路径名称
    108         int getNameCount() : 返回Path 根目录后面元素的数量
    109         Path getParent() :返回Path对象包含整个路径,不包含 Path 对象指定的文件路径
    110         Path getRoot() :返回调用 Path 对象的根路径
    111         Path resolve(Path p) :将相对路径解析为绝对路径
    112         Path toAbsolutePath() : 作为绝对路径返回调用 Path 对象
    113         String toString() : 返回调用 Path 对象的字符串表示形式
    114  */
    115     
    116     @Test
    117     public void test2(){
    118         Path path = Paths.get("e:/nio/hello.txt");
    119         
    120         System.out.println(path.getParent());
    121         System.out.println(path.getRoot());
    122         
    123 //        Path newPath = path.resolve("e:/hello.txt");
    124 //        System.out.println(newPath);
    125         
    126         Path path2 = Paths.get("1.jpg");
    127         Path newPath = path2.toAbsolutePath();
    128         System.out.println(newPath);
    129         
    130         System.out.println(path.toString());
    131     }
    132     
    133     @Test
    134     public void test1(){
    135         Path path = Paths.get("e:/", "nio/hello.txt");
    136         
    137         System.out.println(path.endsWith("hello.txt"));
    138         System.out.println(path.startsWith("e:/"));
    139         
    140         System.out.println(path.isAbsolute());
    141         System.out.println(path.getFileName());
    142         
    143         for (int i = 0; i < path.getNameCount(); i++) {
    144             System.out.println(path.getName(i));
    145         }
    146     }
    147 }
  • 相关阅读:
    利用模板实现c++智能指针
    movit 相关函数(二)
    moveit相关函数解释
    ros常用函数(1)
    Qtcreator中cin函数无法在application output中进行输入的问题的解决
    c++速成,适合有c基础的朋友(3)
    【重要通知】本博客不再更新,更多教程请访问 makermaker.cc
    BBC micro:bit 学习资源汇总(最近更新2019年1月6日....)
    [20个项目学会BBC micro:bit编程] 20-无线通信
    [20个项目学会BBC micro:bit编程] 19-直流电机控制
  • 原文地址:https://www.cnblogs.com/xuzekun/p/7435713.html
Copyright © 2011-2022 走看看