zoukankan      html  css  js  c++  java
  • 使用Files更优雅的对文件操作

    以更优雅的方式操作文件:

    以前我们普遍使用java的File对文件操作,创建文件夹、删除文件、移动文件、获取文件属性等等。。。

    如果我们要获取文件夹下所有文件,就需要自己写个递归进行遍历;

    如果我们需要读取文件,就必须写IO流来R/W,比较繁琐。

    现在java退出了New IO的处理方式,使用的是java.nio.file.*包的类,下来我们举个小例子进行学习:

     1 package com.cheng2839.test;
     2 
     3 import java.io.File;
     4 import java.io.IOException;
     5 import java.net.URI;
     6 import java.nio.file.FileSystems;
     7 import java.nio.file.FileVisitResult;
     8 import java.nio.file.Files;
     9 import java.nio.file.Path;
    10 import java.nio.file.Paths;
    11 import java.nio.file.SimpleFileVisitor;
    12 import java.nio.file.StandardCopyOption;
    13 import java.nio.file.StandardOpenOption;
    14 import java.nio.file.attribute.BasicFileAttributes;
    15 import java.util.ArrayList;
    16 import java.util.Arrays;
    17 import java.util.List;
    18 
    19 /**
    20  * 使用Files代替File操作文件
    21  *
    22  * @author cheng2839
    23  * @date 2018年11月16日
    24  */
    25 public class MyTest010 {
    26 
    27     public static void claList() throws IOException {
    28 
    29         // 读取文件
    30         Path path = Paths.get("D:/Mytest010");
    31         List<String> lineFile = Files.readAllLines(path);
    32         System.out.println(lineFile);
    33 
    34 
    35         //复制文件
    36         Path copyPath = Paths.get("D:/Mytest010-1");
    37         if (Files.exists(copyPath)) {
    38             Files.delete(copyPath);
    39             System.out.println("delete file:" + copyPath);
    40         }
    41         copyPath = Files.copy(path, copyPath);
    42         System.out.println("copy file:" + copyPath.toString());
    43 
    44         //查看文件夹个数
    45         long fSize = Files.size(Paths.get("D:/"));
    46         System.out.println("size file:"+fSize);
    47 
    48         //以追加模式向文件中写入内容
    49         copyPath = Files.write(copyPath, Arrays.asList("", "write one line", "write two line"), StandardOpenOption.APPEND);
    50         System.out.println("write file:" + copyPath);
    51 
    52         //移动文件
    53         Files.move(copyPath, Paths.get("D:/Mytest010-2"), StandardCopyOption.REPLACE_EXISTING);
    54 
    55         //将Path转换为File、Uri
    56         Path pp = FileSystems.getDefault().getPath(".");
    57         File ppFile = pp.toFile();
    58         URI ppUri = pp.toUri();
    59         System.out.println(pp.normalize().toString());
    60         System.out.println(pp.toRealPath().toString());
    61         System.out.println(ppFile.getAbsolutePath());
    62         System.out.println(ppUri.getPath());
    63 
    64         //遍历目录文件
    65         List<Path> pathList = new ArrayList<>();
    66 
    67         Files.walkFileTree(Paths.get("D:/mnt"), new SimpleFileVisitor<Path>(){
    68             public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
    69                 if (file.toString().toLowerCase().endsWith(".log")) {
    70                     pathList.add(file);
    71                 }
    72                 return FileVisitResult.CONTINUE;
    73             }
    74         });
    75 
    76         System.out.println("pathList.size = " + pathList.size());
    77         for (Path p : pathList) {
    78             System.out.println("pathList -- " + p.toRealPath());
    79         }
    80     }
    81 
    82     public static void main(String args[]) throws Exception {
    83         claList();
    84     }
    85 }

    运行结果如下:

     1 [我是第一行, cheng2839, 今天是个好日子,有个好心情!, 2018年11月16日, 我是新增的一行, ]
     2 copy file:D:Mytest010-1
     3 size file:20480
     4 write file:D:Mytest010-1
     5 
     6 D:Program FilesJavaWorkspacesmyProject
     7 D:Program FilesJavaWorkspacesmyProject.
     8 /D:/Program Files/Java/Workspaces/myProject/./
     9 pathList.size = 1161
    10 pathList -- D:mntlogsusiness.log
    11 pathList -- D:mntlogsdefault.log
    12 pathList -- D:mntlogsdigest.log
    13 pathList -- D:mntlogserror.log
    14 pathList -- D:mntlogsusiness.log
    15 pathList -- D:mntlogsdefault.log
    16 pathList -- D:mntMX1.log
    17 pathList -- D:mntMX2.log
    18 pathList -- D:mntMXowndigest.log
    19 //此处省略剩余的1000多行

    大道至简,这样我们就更方便的操作File,两三行代码搞定!

    ____________________________特此,勉励____________________________
    本文作者cheng2839
    本文链接https://www.cnblogs.com/cheng2839
    关于博主:评论和私信会在第一时间回复。
    版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
    声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
  • 相关阅读:
    java入门了解14
    java入门了解13
    java入门了解12
    java入门了解11
    Hive-安装
    Hive-基本概念
    Java笔记20
    Java-笔记19
    Java-笔记18-复习
    Java-笔记18
  • 原文地址:https://www.cnblogs.com/cheng2839/p/12720793.html
Copyright © 2011-2022 走看看