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详解

    java中有很多实用类,熟悉这些类,很大程度上会减少你的代码量. 本文记录的是在JDK1.7中加入的类------...

  • Files

    Java NIO的Files(java.nio.file.Files)类提供一些操作文件系统的文件的方法。本篇教程...

  • java时间日期的处理

    本文摘录自:Java时间日期的处理:Java Date类、Calendar类详解深入理解Java常用类-----时...

  • 归档日志 oracle

    Oracle-归档日志详解(运行模式、分类) 一、Oracle日志分类 分三大类: Alert log files...

  • Java编程基础(11)

    Java编程基础知识:Java内置包装内 1.Java Object类详解:Object类的常用方法(equals...

  • Thread类详解以及创建线程的四种方法

    1.Thread 类详解 Thread类是Java语言中重要的基础类,位于java.lang包中。Thread类有...

  • JDK动态代理详解

    JDK动态代理详解 java动态代理类 Java动态代理类位于java.lang.reflect包下,一般主要涉及...

  • JAVA类加载机制

    jvm之java类加载机制和类加载器(ClassLoader)的详解java类加载机制:全盘负责、双亲委派、缓存机...

  • Java的Pattern与Matcher类

    Java的Pattern与Matcher类 (一)java.uti java.util 是 java 实用工具类库...

  • javaClass类文件结构,类加载过程以及内存分配

    知识要点: Java虚拟机简介 Class类文件结构 Class类文件结构详解 Java虚拟机简介 Java虚拟机...

网友评论

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

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