最近在做文件类相关的操作,走读了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(); } }
相关推荐
FileUtils实现文件下载,下载的文件会显示真是的文件名,下载的文件无论什么格式都不会在页面直接打开
文件工具类FileUtils,对文件中内容行数lines的总数统计
fileutils.zip,fileutils-一个简单的filewatcher实用程序一个简单的filewatcher实用程序
FileUtils.cpp pdal c++
### FileUtils 的方法大全 本文将详细介绍 `FileUtils` 类中提供的各种文件操作方法,这些方法在 Java 开发中非常实用,能够帮助开发者高效地完成文件处理任务。 #### 一、获取系统的临时目录路径 **方法名**: `...
Apache Commons IO库中的`org.apache.commons.io.FileUtils`类是一个非常实用的工具类,它提供了大量方便、高效的方法,用于处理文件系统操作。这个类在Java开发中被广泛使用,尤其是在处理大量的文件读写和管理任务...
【Java基础】-- FileUtils工具类常用方法 在Java开发中,进行文件操作是必不可少的一部分,Apache Commons IO库提供了一个非常方便的工具类FileUtils,它对Java基础的IO操作进行了封装,使得文件处理更加简洁易用。...
`FileUtils`是一个方便的工具类,用于简化这些操作。本篇将详细讲解如何利用`FileUtils`实现文件的上传和下载,并介绍如何在Java Web项目中集成和使用这个工具。 首先,`FileUtils`并不是Java标准库的一部分,而是...
,复制单个文件到指定路径,复制整个文件夹到指定路径,复制文件夹下所有文件到指定路径,删除单个文件,删除文件夹下所有文件,删除文件夹以及文件下下所有文件。。。等
收集下JAVA日常开发常用的工具类 包括 文件处理工具:FileUtils 有需要的大家可以下载使用希望能帮到各位
实现文件的创建、删除、复制、压缩、解压以及目录的创建、删除、复制、压缩解压等功能
android File操作工具类 提供了常用的File操作方法
fileutils-maven-插件fileutils-maven-plugin 是一个构建插件,用于对文本文件执行一些基本操作。目标概述fileutils-maven-plugin 提供了几个目标。 fileutils-maven-plugin:concatFileList 将文件内容连接到输出...
在`FileUtils`这个类中,这些功能通常会被封装成方法,比如`compressFolderTo7z()`和`uncompress7z()`, 以及对应的.zip版本的方法。这些方法应该处理所有必要的错误和异常,以确保文件操作的正确性和安全性。 总的...
支持多线程上传下载,支持断点续传功能的一个工具类。