java实用类Files详解

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

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

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

《java实用类Files详解》 image.png

好,接下来看几个实例

复制文件

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

《java实用类Files详解》 image.png

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

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

《java实用类Files详解》 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();
        }
    }

}

下载成功

《java实用类Files详解》 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对象
    原文作者:听风逝夜h
    原文地址: https://www.jianshu.com/p/102c9ff9b6c6
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞