博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FileUtils工具类的使用
阅读量:6708 次
发布时间:2019-06-25

本文共 7061 字,大约阅读时间需要 23 分钟。

import org.apache.commons.io.FileUtils;import org.apache.commons.io.filefilter.DirectoryFileFilter;import org.apache.commons.io.filefilter.FileFileFilter;import org.apache.commons.io.filefilter.FileFilterUtils;import org.apache.commons.io.filefilter.IOFileFilter;import org.junit.Test;import java.io.*;import java.net.URL;import java.util.Date;import java.util.Iterator;import java.util.List;import java.util.zip.CRC32;/** * FileUtils支持很多文件操作,如 * * 文件写入 * 读取文件 * 创建目录 * 拷贝文件和目录 * 删除文件和目录 * 从URL转换 * 基于统配和过滤查看文件和目录 * 比较文件内容 * 文件的更新时间 * 检查校验码 * * Created by xxh on 2016/11/24. */public class FileUtilsTest {    private static File parent = new File("D://test");    @Test    public void getDirTest(){        //获得基本的信息        System.out.println(FileUtils.getTempDirectory());//获取临时目录 java.io.tmpdir,getUserDirectoryPath返回路径字符串        System.out.println(FileUtils.getUserDirectory());//获取用户主目录 user.home,getUserDirectoryPath返回路径字符串        //以可读的方式,返回文件的大小EB, PB, TB, GB, MB, KB or bytes        System.out.println(FileUtils.byteCountToDisplaySize(10000000));        System.out.println(FileUtils.byteCountToDisplaySize(1));    }    @Test    public void openStream() throws IOException {        //获取文件输入和输出的文件流        //文件是目录或者不存在,都会跑出异常        InputStream in = FileUtils.openInputStream(new File("D://test/test1"));        OutputStream out = FileUtils.openOutputStream(new File("D://test/test2"));        out = FileUtils.openOutputStream(new File("D://test/test3"),true);//是否追加的形式添加内容    }    @Test    public void FileOperation() throws IOException {        //创建文件,如果文件存在则更新时间;如果不存在,创建一个空文件        //创建空文件的方式为:        // final OutputStream out = openOutputStream(file);        // IOUtils.closeQuietly(out);        FileUtils.touch(new File("D://test/test4"));        //文件内容的对比        FileUtils.contentEquals(new File("D://test/test1"),new File("D://test/test2"));        FileUtils.contentEqualsIgnoreEOL(new File("D://test/test1"),new File("D://test/test2"),null);//忽略换行符,第三个参数是字符集        //根据URL获取文件        FileUtils.toFile(new URL("file://D://test/test1"));        FileUtils.toFiles(null);        FileUtils.toURLs(new File[]{
new File("D://test/test1")}); //文件拷贝 FileUtils.copyFileToDirectory(new File("/test1"),new File("/dir"),true);//第三个参数是否更新时间 FileUtils.copyFile(new File("/source"),new File("/target"),true);//TODO 阅读doCopy源码 //目录拷贝 File srcDir = new File("/source"); File destDir = new File("/target"); FileUtils.copyDirectoryToDirectory(new File("/source"),new File("/target")); FileUtils.copyDirectory(new File("/source"),new File("/target")); FileUtils.copyDirectory(srcDir, destDir, DirectoryFileFilter.DIRECTORY);//仅仅拷贝目录 IOFileFilter txtSuffixFilter = FileFilterUtils.suffixFileFilter(".txt");// 创建.txt过滤器 IOFileFilter txtFiles = FileFilterUtils.andFileFilter(FileFileFilter.FILE, txtSuffixFilter); // 创建包含目录或者txt文件的过滤器 FileFilter filter = FileFilterUtils.orFileFilter(DirectoryFileFilter.DIRECTORY, txtFiles); // Copy using the filter FileUtils.copyDirectory(srcDir, destDir, filter);//TODO 阅读doCopyDirectory源码 //文件拷贝 FileUtils.copyInputStreamToFile(new FileInputStream("/test"),new File("/test")); FileUtils.copyURLToFile(new URL("file:/test"),new File("/test")); //删除文件 FileUtils.deleteDirectory(new File("/test"));//删除目录下所有的内容 FileUtils.deleteQuietly(new File("/test"));//如果是目录,会级联删除;不会抛出异常 //判断文件是否存在 FileUtils.directoryContains(new File("/dir"),new File("/file")); //清除目录中的内容,不会删除该目录; //先verifiedListFiles检查目录,检查目录是否为目录、是否存在,然后调用listFiles,如果返回null,则抛出异常 //遍历目录中的文件,如果是目录则递归删除;如果是文件则强制删除,删除失败(文件不存在或无法删除)都会抛出异常 FileUtils.cleanDirectory(new File("/dir"));//TODO verifiedListFiles <------2016/11/24 //等待一个文件xx秒,知道文件创建后才返回。每max(100,remainning)循环检查一次 while(FileUtils.waitFor(new File("/dir"),60)){} //读取目标文件,内部调用IOUtils.toString(inputstream,"utf-8") String str = FileUtils.readFileToString(new File("/dir"),"utf-8"); //内部调用IOUtils.toByteArray(in) byte[] bytes = FileUtils.readFileToByteArray(new File("/dir")); //内部调用IOUtils.readLines(in, Charsets.toCharset(encoding)); List
strs = FileUtils.readLines(new File("/dir"),"utf-8"); //内部调用IOUtils.lineIterator(in, encoding) FileUtils.lineIterator(new File("/dir"),"utf-8"); //四个参数分别为:目标文件,写入的字符串,字符集,是否追加 FileUtils.writeStringToFile(new File("/target"),"string","utf-8",true); //write可以接受charsequence类型的数据,string,stringbuilder和stringbuffer都是实现了charsequence接口 FileUtils.write(new File("/target"),"target char sequence","utf-8",true); FileUtils.writeByteArrayToFile(new File("/target"),"bytes".getBytes());//(file,字符数组) FileUtils.writeByteArrayToFile(new File("/target"),"bytes".getBytes(),true);//(file,字符数组,是否追加) FileUtils.writeByteArrayToFile(new File("/target"),"bytes".getBytes(),0,10);//(file,字符数组,起始位置,结束位置) FileUtils.writeByteArrayToFile(new File("/target"),"bytes".getBytes(),0,10,true);//(file,字符数组,起始位置,结束位置,是否追加) //writeLines多了一个lineEnding参数 FileUtils.writeLines(new File("/target"),"utf-8", FileUtils.readLines(new File("/target"),"utf-8")); //强制删除 FileUtils.forceDelete(new File("/target")); //在JVM FileUtils.forceDeleteOnExit(new File("/target")); //强制创建文件目录,如果文件存在,会抛出异常 FileUtils.forceMkdir(new File("/target")); //强制创建父级目录 FileUtils.forceMkdirParent(new File("/xxxx/target")); //如果是文件,直接读取文件大小;如果是目录,级联计算文件下的所有文件大小 FileUtils.sizeOf(new File("/target"));//返回Long FileUtils.sizeOfAsBigInteger(new File("/target"));//返回BigInteger FileUtils.sizeOfDirectory(new File("/target")); FileUtils.sizeOfDirectoryAsBigInteger(new File("/target")); //对比文件新旧 FileUtils.isFileNewer(new File("/target"),new File("/file")); FileUtils.isFileOlder(new File("/target"), new Date()); FileUtils.checksum(new File("/target"),new CRC32()); FileUtils.checksumCRC32(new File("/target")); FileUtils.moveDirectory(new File("/target"),new File("/file")); FileUtils.moveDirectoryToDirectory(new File("/target"),new File("/file"),true); FileUtils.moveFile(new File("/target"),new File("/file")); FileUtils.moveFileToDirectory(new File("/target"),new File("/dir"),true); FileUtils.moveToDirectory(new File("/target"),new File("/dir"),true); FileUtils.isSymlink(new File("/target")); } @Test public void findFiles(){ //返回文件的列表 List
files = (List
) FileUtils.listFiles(parent,new String[]{"test1","test2"},true);//TODO 重点看一下源码 //返回文件迭代器 Iterator
files_iter = FileUtils.iterateFiles(parent,new String[]{"test1","test3"},true); //把collection
转换成File[] FileUtils.convertFileCollectionToFileArray(files); }}

 

转载于:https://www.cnblogs.com/MarchThree/p/6898147.html

你可能感兴趣的文章
gcc指定头文件路径及动态链接库路径
查看>>
Linux上使用Qt Creator进行C/C++开发
查看>>
自己平常开发常用的jq方法
查看>>
实时查看mysql运行状态
查看>>
android 7.1悬浮窗系统权限问题
查看>>
数据切分——Mysql分区表的管理与维护
查看>>
混合云使用不能盲目:学习最佳实践是王道
查看>>
通过实例模拟ASP.NET MVC的Model绑定的机制:集合+字典
查看>>
调度器之 Kubernetes
查看>>
PDMS RVM TO 3DXML - RvmTranslator6.0
查看>>
《数学与泛型编程:高效编程的奥秘》一3.2 筛选素数
查看>>
不想被攻击,5款便携式反病毒和反恶意软件帮到你
查看>>
【投资人不懂AI】为什么说AI创业不是4、5个人的团队就能搞定的事
查看>>
ARM公司收购Apical,欲致力推进“目联网”技术
查看>>
《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一3.3.2 XML Schema
查看>>
《机器人自动化:建模、仿真与控制》——1.5 习题解答
查看>>
积水成渊——数据中心用水效率分析
查看>>
重新定义云数据库 阿里云POLARDB 9月21日发布
查看>>
物联网安全威胁剧增 如何拓展移动化能力
查看>>
工业物联网:创造价值 转换业务模式
查看>>