/**

* FileUtils支持很多文件操作,如

* 文件写入

* 读取文件

* 创建目录

* 拷贝文件和目录

* 删除文件和目录

* 从URL转换

* 基于统配和过滤查看文件和目录

* 比较文件内容

* 文件的更新时间

* 检查校验码

*/

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<String> 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<File> files = (List<File>) FileUtils.listFiles(parent,new String[]{"test1","test2"},true);//TODO 重点看一下源码

//返回文件迭代器

Iterator<File> files_iter =  FileUtils.iterateFiles(parent,new String[]{"test1","test3"},true);

//把collection<File>转换成File[]

FileUtils.convertFileCollectionToFileArray(files);

}

FileUtils工具类的使用方法相关推荐

  1. ( 持续更新,目前含 200+ 工具类 ) DevUtils 是一个 Android 工具库, 主要根据不同功能模块,封装快捷使用的工具类及 API 方法调用。

    DevUtils GitHub About ( 持续更新,目前含 200+ 工具类 ) Roadmap DevUtils 是一个 Android 工具库,主要根据不同功能模块,封装快捷使用的工具类及 ...

  2. javaSE commons-io第三方插件, FileUtils工具类,复制文件夹、文件,写入/读取文件

    commons-io插件下载:https://pan.baidu.com/s/16-lyGR0KKp943pIOCYTVcg  密码:x1t9 在项目中导入classpath: 1.创建lib文件夹 ...

  3. 最简单的文件上传--FileUtils工具类

    (文件上传的方法各有不同,这里挑了一个最为简单实用的分享给大家,后续会更新其他版本的文件上传和下载功能) 一.前台页面准备 二.后台代码配合 public class FileUpload exten ...

  4. 第三次学JAVA再学不好就吃翔(part87)--Arrays工具类的asList方法

    学习笔记,仅供参考,有错必纠 Arrays工具类的asList方法 方法概述 public static <T> List<T> asList(T... a) 返回一个受指定数 ...

  5. java.util.zip 用法,Java压缩文件工具类ZipUtil使用方法代码示例

    本文实例通过Java的Zip输入输出流实现压缩和解压文件,前一部分代码实现获取文件路径,压缩文件名的更改等,具体如下: package com.utility.zip; import java.io. ...

  6. 分页封装实用工具类及其使用方法

    分页封装实用工具类及其使用方法 作者: javaboy2012 Email:yanek@163.com qq:    1046011462 package com.yanek.util; import ...

  7. HttpClient Utils工具类的编写方法分享

    转自: HttpClient Utils工具类的编写方法分享 HttpClient简介: HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的.最新的.功 ...

  8. FileUtils工具类详解

    FileUtils org.apache.commons.io.FileUtils 下载地址:commons-io Maven依赖 <dependency><groupId>c ...

  9. ssm整合oracle分页,java实现ssm分页工具类及其使用方法

    分享一下我现在所使用的分页工具类,不像网上的那么规范 纯属自己总结根据逻辑敲出来的,基于mysql的limit来做分页.有不对的地方还望大佬指出,直接上代码 PageTools package com ...

最新文章

  1. putty ubuntu服务器 上传文件,教你如何使用PuTTY上传文件?
  2. 英语语法---不定式短语详解
  3. ITK:在图像上叠加标签图
  4. Linux静默安装oracle
  5. POJ2676Sudoku
  6. LeetCode 96——不同的二叉搜索树
  7. 分布式一致性算法-paxos详解与分析
  8. Flutter 自定义 ImageButton
  9. SpringBoot + QueryDSL 大大简化复杂查询操作
  10. 从基础描述无刷直流电机的工作原理
  11. ipad的正确使用方法视频,ipad的正确使用方法图解
  12. SSM+高校学生综合评测系统 毕业设计-附源码200851
  13. win7系统备份还原软件_十分不错的系统还原工具 一键还原备份系统软件 一键还原备份SGIMINI4.0通用版本...
  14. asp.net MVC三层结构代码生成器
  15. Fiddler简介与功能
  16. 疫情过后:表面一切照旧,暗里风起云涌!
  17. 如何用php算出你活了天,按日子来做活儿——第一个Blog DayHappy Day
  18. 洛谷P1606 Lilypad Pond G
  19. 解决package jdk1.8-2000:1.8.0_171-fcs.x86_64 is already installed问题
  20. C++最小二乘拟合 (高阶最小二乘拟合)(附C++代码)

热门文章

  1. 2022年哪些音质蓝牙耳机比较好?超棒音质蓝牙耳机推荐
  2. 第二十四天:HäirIÖ: Human Hair as Interactive Material. TEI2018
  3. java 猜数字游戏
  4. Leetcode75. 颜色分类
  5. matlab 圆度误差,用MATLAB评定圆度误差的研究
  6. js判断是否是Json对象
  7. 黑苹果 bigsur 11.1 系统SIP权限解锁
  8. 抖音死亡计算机在线测,抖音死亡计算器怎么用?抖音死亡计算器测试入口介绍...
  9. PHP中如何替换2个反斜杠的转义字符
  10. 无需绑定设备,下载google play的apk