`

FileUtils走读笔记

阅读更多

 

 最近在做文件类相关的操作,走读了org.apache.commons.io.FileUtils代码。特分享我的走读过程如下:

 

一、概要

pom依赖:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
包名称:org.apache.commons.io
类名:FileUtils.java
 
二、方法
1. public static File getFile(File directory, String... names)
说明:获取基目录下的某个文件,directory与多个name组合成一个路径
范例:
    @Test
    public void TestGetFile() {
        try {
            File file = FileUtils.getFile(new File("E:/data"), "gpslog", "msg.log");
            List<String> contents = FileUtils.readLines(file);

            for (String string : contents) {
                System.out.println(string);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
2. public static File getFile(String... names)
说明:获取目录下某个文件,多个name组合成一个路径
范例:
    @Test
    public void TestGetFile() {
        try {
            File file = FileUtils.getFile("E:/data/gpslog", "msg.log");
            List<String> contents = FileUtils.readLines(file);

            for (String string : contents) {
                System.out.println(string);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
3. public static String getTempDirectoryPath()
说明:获取默认的临时文件路径
范例:
    @Test
    public void TestGetTempDirectoryPath() {
        try {
            String directoryPath = FileUtils.getTempDirectoryPath();

            System.out.println(directoryPath);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
4. public static File getTempDirectory()
说明:获取默认的临时文件路径对应的文件夹对象
范例:
    @Test
    public void TestGetTempDirectory() {
        try {
            File directoryPathFile = FileUtils.getTempDirectory();
            if (directoryPathFile.isDirectory()) {
                String[] childs = directoryPathFile.list();
                for (String child : childs) {
                    System.out.println(child);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
5. public static String getUserDirectoryPath()
说明:获取用户目录文件路径
范例:
    @Test
    public void TestGetUserDirectoryPath() {
        try {
            String userDirectoryPath = FileUtils.getUserDirectoryPath();
            System.out.println(userDirectoryPath);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
6. public static String getUserDirectoryPath()
说明:获取用户目录文件路径
范例:
    @Test
    public void TestGetUserDirectory() {
        try {
            File directoryPathFile = FileUtils.getUserDirectory();
            if (directoryPathFile.isDirectory()) {
                String[] childs = directoryPathFile.list();
                for (String child : childs) {
                    System.out.println(child);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
 7. public static FileInputStream openInputStream(File file) throws IOException
说明:获取文件对应的输入流
范例:
    @Test
    public void TesTopenInputStream() {
        try {
            FileInputStream openInputStream = FileUtils.openInputStream(new File("E:/data/gpslog/msg.log"));
            byte[] data = new byte[openInputStream.available()];

            while (openInputStream.read(data) != -1) {
                System.out.println(new String(data));
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
8. public static FileInputStream openInputStream(File file) throws IOException
说明:获取文件对应的输出流。每次执行方法不是去追加内容,而是去覆盖。
范例:
    @Test
    public void TestOpenOutputStream() {
        try {
            FileOutputStream openOutputStream = FileUtils.openOutputStream(new File("E:/data/gpslog/msg.log"));
            openOutputStream.write("hello world2".getBytes());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
9. public static FileOutputStream openOutputStream(File file, boolean append) throws IOException
说明:获取文件对应的输出流。append为true时表示追加内容,否则表示覆盖文件内容。
范例:
    @Test
    public void TestOpenOutputStream() {
        try {
            FileOutputStream openOutputStream = FileUtils.openOutputStream(new File("E:/data/gpslog/msg.log"), true);
            openOutputStream.write("hello girl".getBytes());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
10. public static String byteCountToDisplaySize(long size)
说明:获取size对应的文件大小转换值,最小单位为byte。单位包含:bytes、KB、MB、GB、TB、PB、EB
范例:
    @Test
    public void TestByteCountToDisplaySize() {
        try {
            String byteCountToDisplaySize = FileUtils.byteCountToDisplaySize(1024 * 1024 * 1024);
            System.out.println("size=" + byteCountToDisplaySize);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 输出:size=1 GB
 
 
11. public static String byteCountToDisplaySize(BigInteger size)
说明:获取size对应的文件大小转换值,最小单位为byte。单位包含:bytes、KB、MB、GB、TB、PB、EB
 
12. public static void touch(File file) throws IOException
说明:修改文件的最后更新时间。若文件存在,修改文件的最后更新为当前时间;如果不存在,则创建文件并修改文件最后更新时间为当前时间。
范例:
    @Test
    public void TestTouch() {
        try {
            FileUtils.touch(new File("E:/data/gpslog/msg.log"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
13. public static File[] convertFileCollectionToFileArray(Collection<File> files)
说明:文件集合转换为文件数组
范例:
    @Test
    public void TestConvertFileCollectionToFileArray() {
        try {
            List<File> files = Lists.newArrayList(
                    new File("E:/data/gpslog/msg.log"),
                    new File("E:/data/gpslog/msg_null.log"));
            File[] convertFiles = FileUtils.convertFileCollectionToFileArray(files);
            for (File file : convertFiles) {
                System.out.println(file.getName() + " --> " + FileUtils.readFileToString(file));
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
14. public static Collection<File> listFiles(File directory, IOFileFilter fileFilter, IOFileFilter dirFilter)
说明:依据文件过滤器、文件夹过滤器,遍历目录下符合过滤器条件的文件。参数说明如下:
a. 第一个参数表示需要进行遍历的文件夹,不允许为空。
b. 第二个参数表示文件夹下面的文件需要满足的过滤器条件,不允许为空。过滤器有很多,比如EmptyFileFilter、NameFileFilter、PrefixFileFilter等。
c. 第三个参数,一般表示是否递归遍历文件夹。为空表示不进行递归遍历,DirectoryFileFilter.INSTANCE表示递归遍历文件夹。
 
范例:
    @Test
    public void TestListFiles() {
        try {
            File directory = new File("E:/data/gpslog");
            IOFileFilter fileFilter = FileFilterUtils.and(EmptyFileFilter.NOT_EMPTY,
                    FileFilterUtils.suffixFileFilter("log"));

            List<File> found = (List<File>) FileUtils.listFiles(directory, fileFilter, DirectoryFileFilter.INSTANCE);
            for (File file : found) {
                System.out.println(file.getAbsolutePath());
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

 
15. public static Collection<File> listFilesAndDirs( File directory, IOFileFilter fileFilter, IOFileFilter dirFilter)
说明:依据文件过滤器、文件夹过滤器,遍历目录下符合过滤器条件的文件及文件夹。参数说明如下:
a. 第一个参数表示需要进行遍历的文件夹,不允许为空。
b. 第二个参数表示文件夹下面的文件需要满足的过滤器条件,不允许为空。过滤器有很多,比如EmptyFileFilter、NameFileFilter、PrefixFileFilter等。
c. 第三个参数,一般表示是否递归遍历文件夹。为空表示不进行递归遍历,DirectoryFileFilter.INSTANCE表示递归遍历文件夹。
范例:
    @Test
    public void TestListFilesAndDirs() {
        try {
            File directory = new File("E:/data/gpslog");
            IOFileFilter fileFilter = FileFilterUtils.and(EmptyFileFilter.NOT_EMPTY,
                    FileFilterUtils.suffixFileFilter("log"));

            List<File> found = (List<File>) FileUtils.listFilesAndDirs(directory, fileFilter,
                    DirectoryFileFilter.INSTANCE);
            for (File file : found) {
                if (file.isDirectory()) {
                    System.out.println("文件夹:" + file.getAbsolutePath());
                } else {
                    System.out.println("文件##" + file.getAbsolutePath());
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 输出:
文件夹:E:\data\gpslog
文件##E:\data\gpslog\msg_null.log

 

16. public static Collection<File> listFiles(File directory, String[] extensions, boolean recursive)
说明:依据文件名称过滤扩展数组,遍历目录下符合条件的文件。参数说明如下:
a. 第一个参数表示需要进行遍历的文件夹,不允许为空。
b. 第二个参数表示文件名称过滤扩展数据。
c. 第三个参数:true表示递归,false表示非递归。
范例:
    @Test
    public void TestListFiles2() {
        try {
            File directory = new File("E:/data/gpslog");
            List<File> found = (List<File>) FileUtils.listFiles(directory, new String[] { "log", "msg", "2" }, true);
            for (File file : found) {
                if (file.isDirectory()) {
                    System.out.println("文件夹:" + file.getAbsolutePath());
                } else {
                    System.out.println("##文件##:" + file.getAbsolutePath());
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
17. public static boolean contentEquals(File file1, File file2) throws IOException
说明:比较两个文件的内容以确定它们是否相等。
范例:
    @Test
    public void TestContentEquals() {
        try {
            boolean eq = FileUtils.contentEquals(FileUtils.getFile("E:\\data\\gpslog\\msg_null.log"),
                    FileUtils.getFile("E:\\data\\gpslog\\msg_null.log"));
            System.out.println(eq);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
18. public static boolean contentEqualsIgnoreEOL(File file1, File file2, String charsetName) throws IOException
说明:依据编码比较两个文件的内容以确定它们是否相等。
范例:
    @Test
    public void TestContentEqualsIgnoreEOL() {
        try {
            boolean eq = FileUtils.contentEqualsIgnoreEOL(FileUtils.getFile("E:\\data\\gpslog\\msg_null.log"),
                    FileUtils.getFile("E:\\data\\gpslog\\msg_null.log"), "UTF-8");
            System.out.println(eq);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
19. public static File toFile(URL url)
说明:将file协议的URL文件路径,读取为文件
范例:
    @Test
    public void TestToFile() {
        try {
            File urlFile = FileUtils.toFile(new URL("file:///E:/data/gpslog/msg_null.log"));

            System.out.println(FileUtils.readFileToString(urlFile));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
20. public static URL[] toURLs(File[] files) throws IOException
说明:依据文件数组生成对应的URL数组
范例:
    @Test
    public void TestToFile() {
        try {
            File[] files = new File[] { FileUtils.getFile("E:/data/gpslog/msg_null.log") };

            URL[] urls = FileUtils.toURLs(files);
            for (URL url : urls) {
                System.out.println(url.toString());
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 输出:file:/E:/data/gpslog/msg_null.log
 
21. public static void copyFileToDirectory(File srcFile, File destDir) throws IOException
说明:将文件拷贝一份到目标目录
范例:
    @Test
    public void TestCopyFileToDirectory() {
        try {
            FileUtils.copyFileToDirectory(FileUtils.getFile("E:/data/gpslog/msg_null.log"),
                    FileUtils.getFile("E:/data/gpslog2"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
0
0
分享到:
评论

相关推荐

    FileUtils实现文件下载

    FileUtils实现文件下载,下载的文件会显示真是的文件名,下载的文件无论什么格式都不会在页面直接打开

    FileUtils类

    文件工具类FileUtils,对文件中内容行数lines的总数统计

    fileutils-1.0.zip

    fileutils.zip,fileutils-一个简单的filewatcher实用程序一个简单的filewatcher实用程序

    FileUtils.cpp

    FileUtils.cpp pdal c++

    FileUtils 的方法大全

    ### FileUtils 的方法大全 本文将详细介绍 `FileUtils` 类中提供的各种文件操作方法,这些方法在 Java 开发中非常实用,能够帮助开发者高效地完成文件处理任务。 #### 一、获取系统的临时目录路径 **方法名**: `...

    org.apache.commons.io.FileUtils

    Apache Commons IO库中的`org.apache.commons.io.FileUtils`类是一个非常实用的工具类,它提供了大量方便、高效的方法,用于处理文件系统操作。这个类在Java开发中被广泛使用,尤其是在处理大量的文件读写和管理任务...

    【Java基础】-- FileUtils工具类常用方法(csdn)————程序.pdf

    【Java基础】-- FileUtils工具类常用方法 在Java开发中,进行文件操作是必不可少的一部分,Apache Commons IO库提供了一个非常方便的工具类FileUtils,它对Java基础的IO操作进行了封装,使得文件处理更加简洁易用。...

    FileUtils java web 文件上传下载工具

    `FileUtils`是一个方便的工具类,用于简化这些操作。本篇将详细讲解如何利用`FileUtils`实现文件的上传和下载,并介绍如何在Java Web项目中集成和使用这个工具。 首先,`FileUtils`并不是Java标准库的一部分,而是...

    文件操作工具类FileUtils

    ,复制单个文件到指定路径,复制整个文件夹到指定路径,复制文件夹下所有文件到指定路径,删除单个文件,删除文件夹下所有文件,删除文件夹以及文件下下所有文件。。。等

    FileUtils.java

    收集下JAVA日常开发常用的工具类 包括 文件处理工具:FileUtils 有需要的大家可以下载使用希望能帮到各位

    FileUtils文件操作工具类

    实现文件的创建、删除、复制、压缩、解压以及目录的创建、删除、复制、压缩解压等功能

    android FileUtils

    android File操作工具类 提供了常用的File操作方法

    fileutils-maven-plugin

    fileutils-maven-插件fileutils-maven-plugin 是一个构建插件,用于对文本文件执行一些基本操作。目标概述fileutils-maven-plugin 提供了几个目标。 fileutils-maven-plugin:concatFileList 将文件内容连接到输出...

    FileUtils.rar

    在`FileUtils`这个类中,这些功能通常会被封装成方法,比如`compressFolderTo7z()`和`uncompress7z()`, 以及对应的.zip版本的方法。这些方法应该处理所有必要的错误和异常,以确保文件操作的正确性和安全性。 总的...

    FileUtils.java 文件工具类

    支持多线程上传下载,支持断点续传功能的一个工具类。

Global site tag (gtag.js) - Google Analytics