java实用类Files详解

作者: 听风逝夜h | 来源:发表于2019-05-07 09:21 被阅读10次

    java中有很多实用类,熟悉这些类,很大程度上会减少你的代码量.

    本文记录的是在JDK1.7中加入的类------Files,见名知意,它就是操作文件的.

    先看看官方对FIles的解释,大致意思是:"此类只包含对文件、目录或其他类型的文件进行操作的静态方法".(注意是静态方法哦),


    image.png

    好,接下来看几个实例

    复制文件

    复制的英文单词是copy,所以,我们找Files.copy方法看看有没有,结果发现,它有三个重载的方法.


    image.png

    重载一:将一个文件中的所有数据复制到输出流
    重载二:将一个输入流中的所有数据复制到一个文件中
    重载三:将一个文件中所有数据复制到另外一个文件中

    细心的同学发现有一个CopyOption参数,这个参数表示复制选项,CopyOption是一个接口,它里面没有任何字段、方法,具体实现类是StandardCopyOption,它是一个枚举类

    image.png

    REPLACE_EXISTING:替换现有文件(如果存在)
    COPY_ATTRIBUTES:将属性复制到新文件。
    ATOMIC_MOVE:将文件作为原子文件系统操作移动

    下面演示的是第二个重载方式,将一个网络图片下载到本地 (图片地址可能会失效)

    
    public class Main  {    
        public static void main(String[] args)  {
            try {
                String urlString ="http://pic38.nipic.com/20140301/6608733_073013180000_2.jpg";
                URL url =new URL(urlString);
                Files.copy(url.openStream(), Paths.get("D:/", "download.jpg"));
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
    }
    

    下载成功


    image.png

    移动文件

    移动文件肯定要找move单词了,也就是Files.move()
    Files.move没有重载方法
    参数一:原文件路径
    参数二:目录文件路径

    public class Main  {    
        public static void main(String[] args)  {
            
            try {
                Files.move(Paths.get("D:/", "download.jpg"), Paths.get("E:/", "download.jpg"));
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    

    删除文件

    有两个方法可以删除
    void Files.delete(path)
    boolean Files.deleteIfExists(path)
    区别:
    delete没有返回值,如果试图删除一个不存在的文件,会报错
    deleteIfExists 返回boolean,如果文件不存在,返回false,不会报错,如果文件存在,返回true

    public class Main  {    
        public static void main(String[] args)  {
            try {
                System.out.println(Files.deleteIfExists(Paths.get("E:/", "msdia80.dll")));
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
        }
    }
    

    其他方法

    还有大量的快捷方法,就不一一说明了,下面列举一个一些常用的

    方法名 作用
    exists 判断文件/文件夹是否存在
    isDirectory 判断是否是一个有效的目录
    createDirectories 创建多级目录
    createDirectorie 创建目录,创建多级会报
    readAllLines 读取一个文本文件中所有行到List<String>集合中
    readAllBytes 读取一个文件中所有数据到字节数组中
    newBufferedReader 返回这个文件的BufferedReader对象

    相关文章

      网友评论

        本文标题:java实用类Files详解

        本文链接:https://www.haomeiwen.com/subject/gcssoqtx.html