写在之前:各种IO操作在开发过程中必不可少,如果进行手写会非常复杂繁琐,在这里对找到的相关资料进行搬运和总结,便于复习和查找
IOUtils(数据相关)
拷贝方法:
copy方法有多个重载方法,满足不同的输入输出流
1 | IOUtils.copy(InputStream input, OutputStream output) |
拷贝大文件的方法:
1 | // 这个方法适合拷贝较大的数据流,比如2G以上 |
将输入流转换成字符串
1 | IOUtils.toString(Reader input) |
将输入流转换成字符数组
1 | IOUtils.toByteArray(InputStream input) |
字符串读写
1 | IOUtils.readLines(Reader input) |
从一个流中读取内容
1 | IOUtils.read(InputStream input, byte[] buffer) |
把数据写入到输出流中
1 | IOUtils.write(byte[] data, OutputStream output) |
从一个流中读取内容,如果读取的长度不够,就会抛出异常
1 | IOUtils.readFully(InputStream input, int length) |
比较
1 | IOUtils.contentEquals(InputStream input1, InputStream input2) // 比较两个流是否相等 |
其他方法
1 | IOUtils.skip(InputStream input, long toSkip) // 跳过指定长度的流 |
FileUtils(文件/文件夹相关)
复制文件夹
1 | FileUtils.copyDirectory(File srcDir, File destDir) // 复制文件夹(文件夹里面的文件内容也会复制) |
复制文件
1 | FileUtils.copyFile(File srcFile, File destFile) // 复制文件 |
把字符串写入文件
1 | FileUtils.writeStringToFile(File file, String data, String encoding) |
把字节数组写入文件
1 | FileUtils.writeByteArrayToFile(File file, byte[] data) |
把集合里面的内容写入文件
1 | // encoding:文件编码,lineEnding:每行以什么结尾 |
往文件里面写内容
1 | FileUtils.write(File file, CharSequence data, Charset encoding) |
文件移动
1 | FileUtils.moveDirectory(File srcDir, File destDir) // 文件夹在内的所有文件都将移动FileUtils.moveDirectoryToDirectory(File src, File destDir, boolean createDestDir) // 以子文件夹的形式移动到另外一个文件下 |
清空和删除文件夹
1 | FileUtils.deleteDirectory(File directory) // 删除文件夹,包括文件夹和文件夹里面所有的文件 |
创建文件夹
1 | FileUtils.forceMkdir(File directory) // 创建文件夹(可创建多级) |
获取文件输入/输出流
1 | FileUtils.openInputStream(File file) |
读取文件
1 | FileUtils.readFileToByteArray(File file) // 把文件读取到字节数组 |
测试两个文件的修改时间
1 | FileUtils.isFileNewer(File file, Date date) |
文件/文件夹的迭代
1 | FileUtils.iterateFiles(File directory, IOFileFilter fileFilter, IOFileFilter dirFilter) |
其他
1 | FileUtils.isSymlink(File file) // 判断是否是符号链接 |
FilenameUtils(文件名/后缀名相关)
1 | FilenameUtils.concat(String basePath, String fullFilenameToAdd) // 合并目录和文件名为文件全路径 |