Java超级实用工具类 - 文件处理

1. 概述

本篇文章主要介绍Java开发常用的工具类,所谓工欲善其事必先利其器,有了好的工具无论是工作还是学习都会游刃有余。

2. 常用方法

顾名思义,apache的FileUtils主要是对文件进行操作,包括:删除、复制、创建、读出、写入等。

Maven仓库地址:

<dependency>
	<groupId>commons-io</groupId>
	<artifactId>commons-io</artifactId>
	<version>2.8.0</version>
</dependency>

2.1 文件写入

// 指定编码,将字符串内容写入到文件中
public static void writeStringToFile(File file, String data, String charsetName);
// 指定编码,将字符串内容写入到文件中,是否覆盖文件内容
public static void writeStringToFile(File file, String data, String charsetName, boolean append);
// 将输入流存为文件
public static void copyInputStreamToFile(InputStream source, File destination);
public static void copyToFile(InputStream source, File destination);
// 将data写入到文件中,如果文件不存在则创建
public static void write(File file, CharSequence data, Charset charset);
// 将data写入到文件中,如果文件不存在则创建,是否追加内容
public static void write(File file, CharSequence data, Charset charset, boolean append);
// 将data写入到文件中,如果文件不存在则创建
public static void write(File file, CharSequence data, String charsetName);
// 将data写入到文件中,如果文件不存在则创建,是否追加内容
public static void write(File file, CharSequence data, String charsetName, boolean append);
// 将字节数组写入到文件中
public static void writeByteArrayToFile(File file, byte[] data);
// 将字节数组写入到文件中,是否追加
public static void writeByteArrayToFile(File file, byte[] data, boolean append);
// 将指定字节数组从off开始的len字节写入到文件中
public static void writeByteArrayToFile(File file, byte[] data, int off, int len);
// 将指定字节数组从off开始的len字节写入到文件中,是否追加
public static void writeByteArrayToFile(File file, byte[] data, int off, int len, boolean append);
// 将集合中的内容写入到文件中
public static void writeLines(File file, Collection<?> lines);
// 将集合中的内容写入到文件中,是否追加
public static void writeLines(File file, Collection<?> lines, boolean append);
// 将集合中的内容写入到文件中,指定行尾
public static void writeLines(File file, Collection<?> lines, String lineEnding);
// 将集合中的内容写入到文件中,指定行尾,是否追加
public static void writeLines(File file, Collection<?> lines, String lineEnding, boolean append);

2.2 文件读取

// 将文件内容以字符串形式读出
public static String readFileToString(File file);
public static String readFileToString(File file, String charsetName);
public static String readFileToString(File file, Charset charsetName);
// 逐行读取文件内容到字符串集合
public static List<String> readLines(File file);
public static List<String> readLines(File file, String charsetName);
public static List<String> readLines(File file, Charset charsetName);
// 读取文件内容,返回行迭代器
public static LineIterator lineIterator(File file);
public static LineIterator lineIterator(File file, String charsetName);
// 读取文件为字节数组
public static byte[] readFileToByteArray(File file);

2.3 复制文件/目录

// 将整个目录(包括目录下的文件夹和文件)复制到目标目录中
public static void copyDirectoryToDirectory(File sourceDir, File destinationDir);
// 复制目录,当文件夹下有重名文件时不覆盖
public static void copyDirectory(File srcDir, File destDir);
// 是否将源目录的最后修改时间赋值给目标目录的最后修改时间,默认不修改
public static void copyDirectory(File srcDir, File destDir, boolean preserveFileDate);
// 根据过滤条件选择需要合并的文件
public static void copyDirectory(File srcDir, File destDir, FileFilter filter);
// 合并文件夹时选择的操作
public static void copyDirectory(File srcDir, File destDir, FileFilter filter, boolean preserveFileDate, CopyOption... copyOptions);
--------------------------------------------------------------------
// 复制文件
public static void copyFile(File srcFile, File destFile);
// 复制文件,是否将原文件修改时间赋值给新文件
public static void copyFile(File srcFile, File destFile, boolean preserveFileDate);
// 使用复制选项复制文件
public static void copyFile(File srcFile, File destFile, boolean preserveFileDate, CopyOption... copyOptions);
// 复制文件到输出流,前提是目标路径和目标文件已经存在
public static long copyFile(File input, OutputStream output);
--------------------------------------------------------------------
// 复制文件到指定目录
public static void copyFileToDirectory(File srcFile, File destDir);
// 复制文件到指定目录,是否将原文件修改时间赋值给新文件
public static void copyFileToDirectory(File srcFile, File destDir, boolean preserveFileDate);
// 复制文件或目录到指定目录
public static void copyToDirectory(File sourceFile, File destinationDir);
// 复制文件集合到目标目录中
public static void copyToDirectory(Iterable<File> sourceIterable, File destinationDir);

2.4 删除文件/目录

// 清空目录下的文件和文件夹而不删除目录
public static void cleanDirectory(File directory);
// 递归删除目录,包括目录下的文件和文件夹
public static void deleteDirectory(File directory);
// 删除一个文件或目录,不会抛出异常
public static void deleteQuietly(File file);
// 删除一个文件或文件夹,会抛出异常
public static void forceDelete(File file);
// 删除文件,删除失败时有返回
public static boolean delete(File file);
// 先把删除命令缓存,JVM终止时真正删除文件
public static void forceDeleteOnExit();

2.5 创建目录

// 常规,创建目录
public static boolean mkdir();
// 创建目录,如果路径目录不存在时会一起创建
public static boolean mkdirs();
// 创建目录,不返回结果,如果路径目录不存在时会一起创建
public static void forceMkdir(File directory);
// 创建目录或文件的父目录,不返回结果,如果路径目录不存在时会一起创建
public static void forceMkdirParent(File file);

2.6 获取目录中的文件或目录

// 允许对给定目录(及其子目录)中的文件进行迭代
public static Iterator<File> iterateFiles(File directory, IOFileFilter fileFilter, IOFileFilter dirFilter);
// 允许对给定目录(及其子目录)中与扩展名数组匹配的文件进行迭代
public static Iterator<File> iterateFiles(File directory, String[] extensions, boolean recursive);
// 允许对给定目录(及其子目录)中的文件和目录进行迭代
public static Iterator<File> iterateFilesAndDirs(File directory, IOFileFilter fileFilter, IOFileFilter dirFilter);
// 将目录中的文件子目录读取为集合
public static Collection<File> listFiles(File directory, IOFileFilter fileFilter, IOFileFilter dirFilter);
// 允许对给定目录(及其子目录)中与扩展名数组匹配的文件进行迭代
public static Collection<File> listFiles(File directory, String[] extensions, boolean recursive);
// 允许对给定目录(及其子目录)中的文件和目录进行迭代
public static Collection<File> listFilesAndDirs(File directory, IOFileFilter fileFilter, IOFileFilter dirFilter);

2.7 移动

// 移动目录,当目标目录存在时会抛出FileExistsException
public static void moveDirectory(File srcDir, File destDir);
// 移动目录到目标目录,是否创建目标目录,当目标目录中存在要移动的目录时,抛出FileExistsException
public static void moveDirectoryToDirectory(File srcDir, File destDir, boolean createDestDir);
// 移动文件,当目标文件存在时FileExistsException
public static void moveFile(File srcFile, File destFile);
// 移动文件到目标目录,是否创建目标目录,如果文件存在于目标目录中,抛出FileExistsException
public static void moveFileToDirectory(File srcFile, File destDir, boolean createDestDir);
// 移动文件或目录到目标目录,是否创建目标目录,如果文件或目录存在于目标目录中,抛出FileExistsException
public static void moveToDirectory(File src, File destDir, boolean createDestDir);

2.8 计算大小

// 读取文件大小,如果是目录则递归计算大小
public static long sizeOf(File file);
public static BigInteger sizeOfAsBigInteger(File file);
// 递归计算目录大小
public static long sizeOfDirectory(File directory);
public static BigInteger sizeOfDirectoryAsBigInteger(File directory);

2.9 创建文件

// 与在linux系统执行命令touch相同的方法
public static void touch(File file);

2.10 将File集合转换成File数组

public static File[] convertFileCollectionToFileArray(Collection<File> files);

2.11 目录是否包含子元素

// 递归查找目录中是否包含某个子元素
public static boolean directoryContains(File directory, File child);

3. 常规方法

3.1 格式化字节

// 返回文件大小的可读版本,其中输入表示特定的字节数。
public static String byteCountToDisplaySize(BigInteger size);
public static String byteCountToDisplaySize(long size);

3.2 校验和

// 使用指定的校验和对象计算文件的校验和。
public static Checksum(File file, Checksum checksum);
public static long checksumCRC32(File file);

3.3 比较两个文件内容是否相同

public static boolean contentEquals(File file1, File file2);
public static boolean contentEquals(File file1, File file2, String charsetName);

3.4 获取用户目录

public static File getUserDirectory();
public static String getUserDirectoryPath();

3.5 打开文件流

public static FileInputStream openInputStream(File file);
public static FileOutputStream openOutputStream(File file);
public static FileOutputStream openOutputStream(File file, boolean append);

3.6 将URL读取为文件

public static File toFile(URL url);
public static File[] toFiles(URL... urls);

3.7 等待

// 检测文件创建,直到超时
public static boolean waitFor(File file, int seconds);
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

探_无止境

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值