首先非常感谢apache这个公司给我们免费开源了这个IO包,我们才能学习使用开发出我们想要的产品,知道这个包已经很多年了一直都是在用固定的几个方法,对里面很多方法都不会用,今天有空我就来研究试用下这里的Api 顺便也学习下高大上的技术,废话不多说了,下面我就挨个的演示下FileUtils里的所有方法。

IO包对应的版本和JDK版,我这里用的是最新的版本也就是2.6版本

jar包自己去下载,下载dizh地址:

http://commons.apache.org/proper/commons-io/download_io.cgi

1、public static String byteCountToDisplaySize(final long size) {}

这个方法的作用:将文件的字节大小转换成我们显示的字符串,比如1024转换后1kb

以下是例子:

import org.apache.commons.io.FileUtils;public class FileUtilsTest {public static void main(String[] args) {String str = FileUtils.byteCountToDisplaySize(1024);String str1 = FileUtils.byteCountToDisplaySize(1024*1024);String str2 = FileUtils.byteCountToDisplaySize(1024*1024*1024);String str3 = FileUtils.byteCountToDisplaySize(1024*1024*1024);System.out.println("str= "+str);System.out.println("str1= "+str1);System.out.println("str2= "+str2);System.out.println("str3= "+str3);//执行结果如下://str=1 KB//str1=1 MB//str2=1 GB//str3=1 GB}}

通过以上结果一目了然就能知道具体的用法了吧。

2、 public static String getTempDirectoryPath() {}

这个方法的作用:获取系统的临时目录路径

import org.apache.commons.io.FileUtils;public class FileUtilsTest {public static void main(String[] args) {//获取系统的临时目录路径String s = FileUtils.getTempDirectoryPath();System.out.println(s);//执行后的结果:C:\Users\ADMINI~1\AppData\Local\Temp\}}

3、public static String getUserDirectoryPath() {

作用:获取用户的主目录

import org.apache.commons.io.FileUtils;public class FileUtilsTest {public static void main(String[] args) {//获取用户的主目录路径String s = FileUtils.getUserDirectoryPath();System.out.println(s);//执行后的结果:C:\Users\Administrator}}

4、 public static long checksumCRC32(final File file) throws IOException {}

方法的作用:得到文件的CRC32的值,用来校验文件是否是同一个文件用的,类似于MD5

package com.ptyt.io.demo;import java.io.File;
import java.io.IOException;
import java.util.zip.CRC32;import org.apache.commons.io.FileUtils;public class FileUtilsTest {public static void main(String[] args) {try {long csum = FileUtils.checksum(new File("C:\\Users\\Administrator\\Desktop\\Test.java"), new CRC32()).getValue();System.out.println(csum);//运行结果2421846926} catch (IOException e) {e.printStackTrace();}}
}

5、public static boolean contentEquals(final File file1, final File file2) throws IOException {}

作用:比较两个文件的内容是否相同,相同返回true 不相同返回false

package com.ptyt.io.demo;import java.io.File;
import java.io.IOException;import org.apache.commons.io.FileUtils;public class FileUtilsTest {public static void main(String[] args) {try {File file1 = new File("C:\\Users\\Administrator\\Desktop\\Test.java");File file2 = new File("C:\\Users\\Administrator\\Desktop\\T3st.java");//比较两个文件的内容是否相同 相同返回true 不相同返回falseboolean isEquals =  FileUtils.contentEquals(file1, file2);System.out.println(isEquals);//运行结果true} catch (IOException e) {e.printStackTrace();}}
}

6、public static boolean contentEqualsIgnoreEOL(final File file1, final File file2, final String charsetName){}

作用:比较两个文件的内容,忽略换行符,第三个参数编码集

package com.ptyt.io.demo;import java.io.File;
import java.io.IOException;import org.apache.commons.io.FileUtils;public class FileUtilsTest {public static void main(String[] args) {try {File file1 = new File("C:\\Users\\Administrator\\Desktop\\Test.java");File file2 = new File("C:\\Users\\Administrator\\Desktop\\T3st.java");//比较两个文件的内容是否相同 相同返回true 不相同返回falseboolean isEquals =  FileUtils.contentEqualsIgnoreEOL(file1, file2, "UTF-8");System.out.println(isEquals);//运行结果true} catch (IOException e) {e.printStackTrace();}}
}

7、public static void cleanDirectory(final File directory) throws IOException {}

作用: 清空文件夹中的所有文件和子文件夹,文件夹本身不会被清除

package com.ptyt.io.demo;import java.io.File;
import java.io.IOException;import org.apache.commons.io.FileUtils;public class FileUtilsTest {public static void main(String[] args) {try {File file2 = new File("C:\\Users\\Administrator\\Desktop\\sign");//清空文件夹中的所有文件和子文件夹,文件夹本身不会被清除FileUtils.cleanDirectory(file2);} catch (IOException e) {e.printStackTrace();}}
}

8、public static boolean isFileOlder(final File file, final Date date) {}

作用:判断文件是否在某个日期之后创建的,如果为真返回true 为假返回false

9、 public static boolean isFileNewer(final File file, final Date date) {}

作用:判断文件是否在某个日期之前创建的,如果为真返回true 为假返回false

package com.ptyt.io.demo;import java.io.File;
import java.text.SimpleDateFormat;import org.apache.commons.io.FileUtils;public class FileUtilsTest {public static void main(String[] args) {try {File file2 = new File("C:\\Users\\Administrator\\Desktop\\123.txt");// 清空文件夹中的所有文件和子文件夹,文件夹本身不会被清除String string = "2018-07-10 10:00:00:023";SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS"); // 最后三个大写SSS代表毫秒,写1个表示前边都不补0,写两个只有是两位0补全boolean b = FileUtils.isFileOlder(file2, sdf.parse(string));boolean b1 = FileUtils.isFileNewer(file2, sdf.parse(string));System.out.println(b);System.out.println(b1);} catch (Exception e) {e.printStackTrace();}}
}

10、public static void deleteDirectory(final File directory) throws IOException {}

作用:删除目录里的文件和子文件夹,也会删除目录本身,和cleanDirectory的区别就是是否删除目录本身

例子:

package com.ptyt.io.demo;import java.io.File;import org.apache.commons.io.FileUtils;public class FileUtilsTest {public static void main(String[] args) {try {File file2 = new File("C:\\Users\\Administrator\\Desktop\\sign\\");//目录和目录里的文件和子文件夹FileUtils.deleteDirectory(file2);} catch (Exception e) {e.printStackTrace();}}
}

11、public static boolean deleteQuietly(final File file) {}

作用:删除一个目录或者一个文件,如果这个目录或者目录不存在不会抛出异常这个方法跟deleteDirectory的区别就是是否抛出异常,deleteDirectory这中方式删除时传的目录不存在或为空是会抛IO异常,deleteQuietly这种方式不会抛出异常

package com.ptyt.io.demo;import java.io.File;import org.apache.commons.io.FileUtils;public class FileUtilsTest {public static void main(String[] args) {try {File file2 = new File("C:\\Users\\Administrator\\Desktop\\sign\\");删除一个目录或者一个文件,如果这个目录或者目录不存在不会抛出异常  FileUtils.deleteQuietly(file2);} catch (Exception e) {e.printStackTrace();}}
}

12、public static void forceDelete(final File file) throws IOException {}

作用:删除目录和文件以及子目录,但是这个目录或文件占用是还是不会删除的,测试后发现跟deleteDirectory() 跟这个方法一样的,不要被这里的force误解了,文件被其他进程占用是你在删除这个文件还是会失败的,不会强制删除的。

package com.ptyt.io.demo;import java.io.File;import org.apache.commons.io.FileUtils;public class FileUtilsTest {public static void main(String[] args) {try {File file2 = new File("C:\\Users\\Administrator\\Desktop\\sign\\");FileUtils.forceDelete(file2);} catch (Exception e) {e.printStackTrace();}}
}

13、public static void forceDeleteOnExit(final File file) throws IOException {}

例子:

package com.ptyt.io.demo;import java.io.File;import org.apache.commons.io.FileUtils;public class FileUtilsTest {public static void main(String[] args) {try {File file2 = new File("C:\\Users\\Administrator\\Desktop\\sign\\");//当JVM退出时,把file对象删除。如果是目录对象则递归删除子目录,跟delete的区别是一个是立马执行 一个是JVM退出后执行 forceDeleteOnExit 这个用来删除临时文件或缓存文件用的FileUtils.forceDeleteOnExit(file2);} catch (Exception e) {e.printStackTrace();}}
}

14、public static void moveDirectoryToDirectory(final File src, final File destDir, final boolean createDestDir)

throws IOException {}

作用:剪切目录,第三个参数是否创建目录

package com.ptyt.io.demo;import java.io.File;import org.apache.commons.io.FileUtils;public class FileUtilsTest {public static void main(String[] args) {try {File file1 = new File("C:\\Users\\Administrator\\Desktop\\sign\\");File file2 = new File("C:\\Users\\Administrator\\Desktop\\sign1\\");FileUtils.moveDirectoryToDirectory(file1, file2, true);} catch (Exception e) {e.printStackTrace();}}
}

15、public static void touch(final File file) throws IOException {}

作用:创建文件,如果文件已经存在修改文件的时间

package com.ptyt.io.demo;import java.io.File;import org.apache.commons.io.FileUtils;public class FileUtilsTest {public static void main(String[] args) {try {File file1 = new File("C:\\Users\\Administrator\\Desktop\\sign\\1.txt");FileUtils.touch(file1);} catch (Exception e) {e.printStackTrace();}}
}

16、public static byte[] readFileToByteArray(final File file) throws IOException {}

作用:读取文件的内容到字节数组里

package com.ptyt.io.demo;import java.io.File;
import java.nio.charset.StandardCharsets;import org.apache.commons.io.FileUtils;public class FileUtilsTest {public static void main(String[] args) {try {File file1 = new File("C:\\Users\\Administrator\\Desktop\\sign\\1.txt");byte[] b =FileUtils.readFileToByteArray(file1);System.out.println(new String(b,StandardCharsets.UTF_8));} catch (Exception e) {e.printStackTrace();}}
}

17、 public static String readFileToString(final File file, final Charset encoding) throws IOException {}

作用:读取文件的内容转换成字符串

package com.ptyt.io.demo;import java.io.File;
import java.nio.charset.StandardCharsets;import org.apache.commons.io.FileUtils;public class FileUtilsTest {public static void main(String[] args) {try {File file1 = new File("C:\\Users\\Administrator\\Desktop\\sign\\1.txt");String str =FileUtils.readFileToString(file1,StandardCharsets.UTF_8);System.out.println(str);} catch (Exception e) {e.printStackTrace();}}
}

18、public static List<String> readLines(final File file, final Charset encoding) throws IOException {}

public static List<String> readLines(final File file, final String encoding) throws IOException {}

作用:一行一行的读取文件里的内容然后存储到List<String> 里.这两个方法作用相同

package com.ptyt.io.demo;import java.io.File;
import java.nio.charset.StandardCharsets;
import java.util.List;import org.apache.commons.io.FileUtils;public class FileUtilsTest {public static void main(String[] args) {try {File file1 = new File("C:\\Users\\Administrator\\Desktop\\sign\\1.txt");List<String> strList =FileUtils.readLines(file1,StandardCharsets.UTF_8);for(String str:strList){System.out.println(str);}} catch (Exception e) {e.printStackTrace();}}
}

19、 public static void write(final File file, final CharSequence data, final Charset encoding, final boolean append){}

作用:写一个字符串或字符到文件里,第一个参数文件对象,第二个参数写入是数据 第三个参数编码集 第四个参数是否追加到文件的后面,true表示追加到后面 false表示覆盖以前的内容

package com.ptyt.io.demo;import java.io.File;
import java.nio.charset.StandardCharsets;import org.apache.commons.io.FileUtils;public class FileUtilsTest {public static void main(String[] args) {try {File file1 = new File("C:\\Users\\Administrator\\Desktop\\sign\\1.txt");FileUtils.write(file1, "hello word!",StandardCharsets.UTF_8,false);String str = FileUtils.readFileToString(file1, StandardCharsets.UTF_8);System.out.println(str);} catch (Exception e) {e.printStackTrace();}}
}

20、public static void writeByteArrayToFile(final File file, final byte[] data, final boolean append){}

public static void writeByteArrayToFile(final File file, final byte[] data, final boolean append){}

public static void writeByteArrayToFile(final File file, final byte[] data, final int off, final int len,
                                            final boolean append) throws IOException {}

作用:写字节数组到文件里,都是重载的方法,参数不一样 功能都是相同的

package com.ptyt.io.demo;import java.io.File;
import java.nio.charset.StandardCharsets;import org.apache.commons.io.FileUtils;public class FileUtilsTest {public static void main(String[] args) {try {File file1 = new File("C:\\Users\\Administrator\\Desktop\\sign\\1.txt");byte b[] ="Hello words!".getBytes();FileUtils.writeByteArrayToFile(file1, b, false);String str = FileUtils.readFileToString(file1, StandardCharsets.UTF_8);System.out.println(str);} catch (Exception e) {e.printStackTrace();}}
}

21、public static File toFile(final URL url) {}

作用:URL转File,henj很简单直接看例子

package com.ptyt.io.demo;import java.io.File;
import java.net.URL;import org.apache.commons.io.FileUtils;public class FileUtilsTest {public static void main(String[] args) {try {URL url = new URL("file:/C:/Users/Administrator/Desktop/sign/1.txt");File file = FileUtils.toFile(url);System.out.println(file);} catch (Exception e) {e.printStackTrace();}}
}

22、public static File getFile(final String... names) {}

public static File getFile(final File directory, final String... names) {} 重载的方法作用一样。

作用:拼接路径返回File对象,实际开发中我们总是为了/或\头疼,拼接路径要么少/要么多/ 这个方法专门geig给我们解决这个问题。

package com.ptyt.io.demo;import java.io.File;import org.apache.commons.io.FileUtils;public class FileUtilsTest {private static final String MAIN_PATH = "C:/Users/Administrator/Desktop/sign";public static void main(String[] args) {try {File file = FileUtils.getFile(MAIN_PATH,"1","2","3","4","5","6","7","8","9","10");System.out.println(file);//执行后的结果//C:\Users\Administrator\Desktop\sign\1\2\3\4\5\6\7\8\9\10} catch (Exception e) {e.printStackTrace();}}
}

执行后的结果 C:\Users\Administrator\Desktop\sign\1\2\3\4\5\6\7\8\9\10 以后我们再也不会为斜杠或反斜杠头疼了,从此不会在这里出bug了。

23、 public static Iterator<File> iterateFiles( final File directory, final String[] extensions, final boolean recursive) {}

public static Iterator<File> iterateFilesAndDirs(final File directory, final IOFileFilter fileFilter, final IOFileFilter dirFilter) {}

public static Iterator<File> iterateFiles( final File directory, final IOFileFilter fileFilter, final IOFileFilter dirFilter) {}

作用:遍历某个目录获取目录里的文件和文件夹,这三个接口也是IO包里的核心说句实话tai太强大了,这里一两句话说不清楚有空开个专题要yanj研究的三个接口,这里我简单的举个例子。

package com.ptyt.io.demo;import java.io.File;
import java.util.Iterator;import org.apache.commons.io.FileUtils;public class FileUtilsTest {private static final String MAIN_PATH = "C:/Users/Administrator/Desktop/sign";public static void main(String[] args) {try {File file = FileUtils.getFile(MAIN_PATH);Iterator<File> fileList = FileUtils.iterateFiles(file, new String[]{"txt"}, true);while (fileList.hasNext()) {File file1 = (File) fileList.next();System.out.println(file1);}//执行后的结果//C:\Users\Administrator\Desktop\sign\1\1.txt//C:\Users\Administrator\Desktop\sign\1\3\3.txt//C:\Users\Administrator\Desktop\sign\2.txt} catch (Exception e) {e.printStackTrace();}}
}

这个例子很简单就是遍历目录下扩展名为txt的所有文件,第三个参数是否遍历子目录,如果为true 遍历整个子目录 false不遍历整个子目录。

执行后的结果:

C:\Users\Administrator\Desktop\sign\1\1.txt

C:\Users\Administrator\Desktop\sign\1\3\3.txt
 C:\Users\Administrator\Desktop\sign\2.txt

24、 public static FileInputStream openInputStream(final File file) throws IOException {}

public static FileOutputStream openOutputStream(final File file) throws IOException {}

public static FileOutputStream openOutputStream(final File file, final boolean append) throws IOException {}

作用:方便的打开输入输出流,有java基础的一看就懂(秒懂)传统的java 打开输入输出流chua创建File 再创建FileOutStream 传进去也可以用 但是判断sh是否是目录是否为空的比较麻烦,这里专门做了这些工作让chen程序员用的更shua爽而已,举个例子:

package com.ptyt.io.demo;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;import org.apache.commons.io.FileUtils;public class FileUtilsTest {private static final String MAIN_PATH = "C:/Users/Administrator/Desktop/sign";public static void main(String[] args) {try {File file = FileUtils.getFile(MAIN_PATH,"2.txt");//打开一个输入流FileInputStream fileInputStream = FileUtils.openInputStream(file);//打开一个输出流FileOutputStream outPutStream = FileUtils.openOutputStream(file);//打开一个内容追加的输出流FileOutputStream outPutStream1 = FileUtils.openOutputStream(file, true);System.out.println(fileInputStream);System.out.println(outPutStream);System.out.println(outPutStream1);} catch (Exception e) {e.printStackTrace();}}
}

得到 FileOutputStream和FileInputStream后剩下的工作交给程序员处理了你想写文件还是读取文件。

25、FileUtils里的常量

举例:

package com.ptyt.io.demo;import java.math.BigInteger;import org.apache.commons.io.FileUtils;public class FileUtilsTest {public static void main(String[] args) {try {long size = 0;BigInteger bi =null;size =FileUtils.ONE_KB;bi =FileUtils.ONE_KB_BI;System.out.println(FileUtils.byteCountToDisplaySize(size)+"  "+FileUtils.byteCountToDisplaySize(bi));size =FileUtils.ONE_MB;bi =FileUtils.ONE_MB_BI;System.out.println(FileUtils.byteCountToDisplaySize(size)+"  "+FileUtils.byteCountToDisplaySize(bi));size =FileUtils.ONE_GB;bi =FileUtils.ONE_GB_BI;System.out.println(FileUtils.byteCountToDisplaySize(size)+"  "+FileUtils.byteCountToDisplaySize(bi));size =FileUtils.ONE_TB;bi =FileUtils.ONE_TB_BI;System.out.println(FileUtils.byteCountToDisplaySize(size)+"  "+FileUtils.byteCountToDisplaySize(bi));size =FileUtils.ONE_PB;bi = FileUtils.ONE_PB_BI;System.out.println(FileUtils.byteCountToDisplaySize(size)+"  "+FileUtils.byteCountToDisplaySize(bi));size =FileUtils.ONE_EB;bi =FileUtils.ONE_EB_BI;System.out.println(FileUtils.byteCountToDisplaySize(size)+"  "+FileUtils.byteCountToDisplaySize(bi));bi =FileUtils.ONE_ZB;System.out.println(FileUtils.byteCountToDisplaySize(bi));bi =FileUtils.ONE_YB;System.out.println(FileUtils.byteCountToDisplaySize(bi));bi =FileUtils.ONE_PB_BI;System.out.println(FileUtils.byteCountToDisplaySize(bi));} catch (Exception e) {e.printStackTrace();}}
}

执行结果:

1 KB  1 KB
1 MB  1 MB
1 GB  1 GB
1 TB  1 TB
1 PB  1 PB
1 EB  1 EB
1024 EB
1048576 EB
1 PB

apache的IO包中的FileUtils方法的使用相关推荐

  1. java.io包对象读写_java.io 包中的____________和____________类主要用于对对象(Object)的读写_学小易找答案...

    [多选题]连铸钢水成分控制的要求有( ). [单选题]起动机用直流电动机将电能转化为 [单选题]下列关于我国少数民族传统禁忌的说法中,错误的是( ). [多选题]下列选项中 , 属于表单控件的是 ( ...

  2. java执行jar中的main_浅谈java 执行jar包中的main方法

    浅谈java 执行jar包中的main方法 通过 OneJar 或 Maven 打包后 jar 文件,用命令: java -jar ****.jar 执行后总是运行指定的主方法,如果 jar 中有多个 ...

  3. org.apache.commons.lang.StringUtils中常用的方法

    org.apache.commons.lang.StringUtils中常用的方法,这里主要列举String中没有,且比较有用的方法: 1. 检查字符串是否为空: static boolean isB ...

  4. java打包成jar|执行jar包中的main方法

    java打包成jar jar -cvf [jar包的名字] [需要打包的文件] 执行jar包中的main方法 java -jar ****.jar 执行后总是运行指定的主方法,如果 jar 中有多个 ...

  5. IO与文件读写---使用Apache commons io包提高读写效率

    [一]Apache commons IO简介 首先贴一段Apache commons IO官网上的介绍,来对这个著名的开源包有一个基本的了解: Commons IO is a library of u ...

  6. Java.io包中常用的类

    Java.io包 Java.io.BufferedInputStream类实例 Java.io.BufferedOutputStream类使用例子 Java.io.BufferedReader类 Ja ...

  7. IO包中的其他类总结

    一.PrintStream和PrintWriter PrintStream 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式. PrintStream 打印的所有字符都使用平台的默认字符 ...

  8. golang 中io包用法(一)

    本文转自Golove博客:http://www.cnblogs.com/golove/p/3276678.html   ,并在此基础上进行修改. io 包为I/O原语提供了基础的接口.它主要包装了这些 ...

  9. Web项目替换jar包中的文件的方法

    经常遇到这样的问题,需要修改jar包中的方法.应该如何做? 1.有些很人性化的框架jar包,比如SpringSecurity,可以修改配置文件指定一个新建的类,让类实现Jar包中的对应的接口就好了. ...

最新文章

  1. PHP安装与使用VLD查看opcode代码【PHP安装第三方扩展的方法】
  2. 从《无主之地3》探讨,为什么刷子游戏能让玩家心甘情愿的肝硬化
  3. RedHat/Centos修改root密码
  4. 2019大疆PC软件开发笔试——开关和灯泡两个电路板
  5. python的特征提取实验一_Spark 2.1.0 入门:特征抽取 — TF-IDF(Python版)
  6. 永中word页码怎么从第二页开始_pdf如何在线转word?这样做,分分钟搞定pdf转word...
  7. HDU 2588 GCD amp;amp; GCD问题总结
  8. bzoj 1726: [Usaco2006 Nov]Roadblocks第二短路(A*第k短路)
  9. Python 格式化字符串f-string概览(转载)
  10. 汇编语言程序设计技巧详解(附例题)
  11. python案例小游戏
  12. Python必会内置函数
  13. 《我喜欢生命本来的样子》读后感作文2100字
  14. windows10系统还原
  15. 电动汽车充放电最优调度 研究了EV充电和放电的调度优化问题 我们首先制定全局调度优化问题,其中优化充电功率以最小化所有在白天执行充电和放电的EV的总成本
  16. 正则环视 php,php正则表达式环视详解
  17. 燕山大学教务系统官网计算机学院,2021年燕山大学教务系统入口:https://jwc.ysu.edu.cn...
  18. 2021年四川高考成绩分数段查询,2021年四川高考成绩排名查询系统,四川高考位次排名表...
  19. 人工智能数学基础之函数与极限(无穷小与夹逼定理),附视频详解【菜鸟窝出品】
  20. 生成图片长微博遇到的坑

热门文章

  1. 【天光学术】汉语言文学论文:浅谈农村初中文言文教学现状及有效策略
  2. SKYLAKE平台安装win7步骤(U盘)
  3. 苹果屏幕尺寸_iPhone 12屏幕维修价格出炉,比iPhone 11贵多少?
  4. MySql ocp认证之备份与恢复(四)
  5. 电脑中文件名称字体变颜色怎么解决,由黑色变成蓝色了。。。。。。
  6. 【转】eclipse, Log4j配置(真心的详细~)
  7. Pytorch项目(1)| 预测泰坦尼克号船上的生存乘客
  8. 学习商业汇票 ---- 银承汇票业务
  9. Subpalindromes
  10. 八月,愿你生活不拥挤,笑容不刻意