FileUtils类的应用

1、写入一个文件;

2、从文件中读取;

3、创建一个文件夹,包括文件夹;

4、复制文件和文件夹;

5、删除文件和文件夹;

6、从URL地址中获取文件;

7、通过文件过滤器和扩展名列出文件和文件夹;

8、比较文件内容;

9、文件最后的修改时间;

10、计算校验和。

一、 复制文件或文件夹方法:

示例:

 1 public class CopyFileorDirectory {
2 public static void main(String[] args) throws Exception {
3 File file1 =new File("path1");
4 File file2 =new File("path2");
5 File file3 =new File("path3");
6 File file4 =new File("path4");
7 File file5 =new File("path5");
8 //将文件复制到指定文件夹中,保存文件日期的时间。
9 // 该方法将指定源文件的内容复制到指定目标目录中相同名称的文件中。
10 // 如果不存在,则创建目标目录。如果目标文件存在,则该方法将覆盖它。
11 FileUtils.copyFileToDirectory(file1,file2);//文件不重命
12 //将文件复制到一个新的地方(重命名文件)并保存文件日期的时间。
13 FileUtils.copyFile(file1,file3);
14
15 //复制文件夹到指定目录下,如果指定目录不存在则创建
16 FileUtils.copyDirectoryToDirectory(file2,file4);
17
18 //复制文件夹到指定目录下并重命名
19 FileUtils.copyDirectory(file4,file5);
20
21 //该方法将指定的源目录结构复制到指定的目标目录中。
22 FileUtils.copyDirectory(file4,file5, DirectoryFileFilter.DIRECTORY);
23
24 // 复制文件夹下第一级内容中指定后缀文件
25 IOFileFilter txtSuffixFilter = FileFilterUtils.suffixFileFilter(".txt");
26 IOFileFilter txtFiles = FileFilterUtils.and(FileFileFilter.FILE, txtSuffixFilter);
27 FileUtils.copyDirectory(file4,file5, txtFiles);
28
29 // 复制文件目录结构及文件夹下第一级目录内指定后缀文件
30 FileFilter filter = FileFilterUtils.or(DirectoryFileFilter.DIRECTORY, txtFiles);
31 FileUtils.copyDirectory(file4,file5, filter,false);//preserveFileDate参数默认为true。
32
33 //将字节从URL源复制到文件目的地。如果它们还不存在,则将创建到目的地的目录。如果已经存在,文件将被覆盖。
34 URL source = new URL("http://imgsrc.baidu.com/baike/pic/ewe.jpg");
35 FileUtils.copyURLToFile(source,file5,1000,1000);
36
37 // 等待NFS传播文件创建,并强制执行超时。该方法重复测试File.exists(),直到它返回true,或直到秒内指定的最大时间。
38 File file = new File("/abc/");
39 boolean d = FileUtils.waitFor(file,100);
40 System.out.println(d);
41 }
42 }

二、删除文件或文件方法

 1 public class FileorDirectoryDelete {
2 public static void main(String[] args) throws Exception{
3 File file = new File("path1");
4 File directory = new File("path2");
5 //递归删除一个目录(包括内容)。
6 FileUtils.deleteDirectory(directory);
7
8 //删除一个文件,不会抛出异常。如果文件是一个目录,删除它和所有子目录。
9 FileUtils.deleteQuietly(file);
10
11 //清理内容而不删除它。
12 FileUtils.cleanDirectory(directory);
13
14 //删除一个文件,会抛出异常
15 //如果file是文件夹,就删除文件夹及文件夹里面所有的内容。如果file是文件,就删除。
16 //如果某个文件/文件夹由于某些原因无法被删除,会抛出异常
17 FileUtils.forceDelete(file);
18 }
19 }

三、创建目录

 1 public class CreatDirectory {
2 public static void main(String[] args) throws Exception {
3 File file = new File("path");
4 //创建一个文件夹,如果由于某些原因导致不能创建,则抛出异常
5 //一次可以创建单级或者多级目录
6 FileUtils.forceMkdir(new File("/Users/wuguibin/Downloads/folder"));
7 //为指定文件创建文件的父级目录
8 FileUtils.forceMkdirParent(file);
9 }
10 }

四、移动文件或文件夹

//移动文件夹,并重新命名
FileUtils.moveDirectory(new File("/Users/Downloads/file1"),
new File("/Users/Downloads/file2/file3")); //移动文件夹,并给定是否重命名
FileUtils.moveDirectoryToDirectory(new File("/Users/Downloads/file1"),
new File("/Users/Downloads/file2/"),false);
//移动文件到指定文件夹中,并重新命名
FileUtils.moveFile(file1,new File("/Users/Downloads/海葡萄.jpen"));
//移动文件到指定文件夹中,并给定是否创建文件夹
FileUtils.moveFileToDirectory(new File("/Users/Downloads/海葡萄.jpeg"),
new File("/Users/Downloads/file2"),false);

五、判断文件是否相同或包含关系、获取文件或文件夹大小

//确定父目录是否包含指定子元素(一个文件或目录)。即directory是否包含file2,在比较之前,文件是标准化的。
boolean a = FileUtils.directoryContains(directory,file2);
//比较两个文件的内容,以确定它们是否相同。
boolean b = FileUtils.contentEquals(file1, file2)

//获取指定文件或文件夹大小,有可能溢出,变为负值
long l = FileUtils.sizeOf(file1);
System.out.println(l+"KB");
//获取指定文件或文件夹大小,不溢出
BigInteger bi= FileUtils.sizeOfAsBigInteger(file1);
System.out.println(bi+"kb");

//递归地计算一个目录的大小(所有文件的长度的总和)。
//注意,sizeOfDirectory()没有检测溢出,如果溢出发生,返回值可能为负。sizeOfDirectoryAsBigInteger()方法则不溢出。
FileUtils.sizeOfDirectory(file1);
FileUtils.sizeOfDirectoryAsBigInteger(file1);

六、比较文件新旧

  //比较指定文件是否比参考文件创建或修改后时间晚
boolean b = FileUtils.isFileNewer(file1,file2)); //如果指定的文件比指定的日期更新。
SimpleDateFormat date = new SimpleDateFormat("yyyy/MM/dd");
String date1 = "2017/06/20";
boolean c = FileUtils.isFileNewer(file1,date.parse(date1));
boolean d = FileUtils.isFileNewer(file1,23243); //指定文件创建或修改后的时间是否比参考文件或日期早
FileUtils.isFileOlder(file1,232434);
FileUtils.isFileOlder(file1,System.currentTimeMillis());

七、写入文件

 //把集合里面的内容写入文件,以指定字符串结束写入
//void writeLines(File file,Collection<?> lines,String lineEnding,boolean append)
ArrayList<String> list = new ArrayList<>();
String str1 = "Java";
String str2 = "JSP";
list.add(str1);
list.add(str2);
FileUtils.writeLines(file8,"GBK",list,"java",true);
//把字符串写入文件
//参数1:需要写入的文件,如果文件不存在,将自动创建。 参数2:需要写入的内容
//参数3:编码格式 参数4:是否为追加模式( ture: 追加模式,把字符串追加到原内容后面)
String data1 = "认真";
FileUtils.writeStringToFile(file,data1, "UTF-8", true); //把字节数组写入文件
byte [] buf = {13,123,34};
System.out.println(new String(buf));
FileUtils.writeByteArrayToFile(file13,buf,0,buf.length,true);

八、读取文件及获取输入输出流

 //将文件的内容读入一个字符串中。
String str = FileUtils.readFileToString(file,"UTF-16" );
FileUtils.readFileToByteArray(file);
//把文件读取到字节数组里面
byte[] readFileToByteArray(final File file) //把文件读取成字符串 ;Charset encoding:编码格式
String readFileToString(final File file, final Charset encoding) //把文件读取成字符串集合 ;Charset encoding:编码格式
List<String> list4 =FileUtils.readLines(
new File("/Users/Shared/笔记/java.txt"),"UTF-8");
Iterator it = list4.iterator();
while (it.hasNext()){
Object obj=it.next();
System.out.println(obj);
} //获取输入流
FileUtils.openInputStream(file);
//获取输出流
FileUtils.openOutputStream(file);

org.apache.commons.io——FileUtils学习笔记的更多相关文章

  1. Caused by: java.lang.ClassNotFoundException: org.apache.commons.io.FileUtils

    1.错误叙述性说明 警告: Could not create JarEntryRevision for [jar:file:/D:/MyEclipse/apache-tomcat-7.0.53/web ...

  2. apache.commons.io.FileUtils的常用操作

    至于相关jar包可以到官网获取 http://commons.apache.org/downloads/index.html package com.wz.apache.fileUtils; impo ...

  3. .apache.commons.io 源代码学习(一)

    java的初学者,准备通读各种高水平源代码,提升能力. 为了避免自己的惰性,写博客. 版本:2.5 开发平台:netbeans. 今天是第一天,网上先看个例子:http://www.importnew ...

  4. org.apache.commons.lang3.ArrayUtils 学习笔记

    package com.nihaorz.model; /** * @作者 王睿 * @时间 2016-5-17 上午10:05:17 * */ public class Person { privat ...

  5. java.lang.NoSuchMethodError: org.apache.commons.io.FileUtils.getTempDirectory()Ljava/io/File;

    我出现这个问题的原因是使用ueditor上传图片 如果不是commons.io的jar包缺失,就是jar包有冲突 另外:最新的ueditor(1.4.3.1)使用的是commons-io-2.4.ja ...

  6. .apache.commons.io 源代码学习(二)FilenameUtils类

    FilenameUtils是apache common io中一个独立的工具类,对其他没有依赖,看其源代码的import即可知道. import java.io.File;import java.io ...

  7. java.lang.NoSuchMethodError: org.apache.commons.io.FileUtils.copyInputStreamToFile(Ljava/io/InputStream;Ljava/io/File;)V

    昨天用的好好的,今天就不行了 也懒得搞 具体原因就是引用的问题 找了个能用的pom 直接贴过去完事儿

  8. Apache Commons IO之FileUtils的常用方法

    Apache Commons IO 在学习io流的时候研究(翻译)了一下这个,只有FileUtils的某些方法,并不全面,还请谅解 org.apache.commons.io 这个包下定义了基于 st ...

  9. apache commons io包基本功能

    1. http://jackyrong.iteye.com/blog/2153812 2. http://www.javacodegeeks.com/2014/10/apache-commons-io ...

随机推荐

  1. 7.modifier插件的自定义和使用

    1.在plugins下面创建一个文件 modifier.changeDate.php 编写: <?php function smarty_modifier_changeDate($utime,$ ...

  2. CSS样式之选择器

    一.CSS选择器构成 CSS选择器是你想要改变样式的html元素,通俗的说,选择器可以改变html文件中标签的属性,这些属性可以是颜色,背景图,字体等.每个选择器有一条或多条声明,可以同时改变某个标签 ...

  3. SharePoint 2016 安装配置流程及需要注意的地方

    1. 安装域, 安装后创建一个用户用于之后的安装配置, 例如 SPAdmin@XXXXX.com 2. 安装sql server 2016 将要安装sql server 的服务器加入域,   并将域账 ...

  4. Vulkan Tutorial 26 view and sampler

    操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Visual Studio 2017 在本章节我们将为图形管线创建另外两个资源来对图像进行采样.第一个资源我们之前已经接触 ...

  5. .NET 跨平台界面框架和为什么你首先要考虑再三

    ​​​原文地址 现在用 C# 来开发​跨平台应用已经有很成熟的方案,即共用非界面代码,而每个操作系统搭配特定的用户界面代码.这个方案的好处是可以直接使用操作系统原生的控件和第三方控件,还能够和操作系统 ...

  6. WAMPServer多站点配置方法

    WAMPServer多站点配置方法:1.在C:\wamp\www 新建文件夹test01,在里面新建index.php,内容为 "Hello Test01". 2.C:\wamp\ ...

  7. 在CI中实现持续Web安全扫描

    一. 当前Web应用安全现状 随着中国互联网金融的爆发和繁荣,Web应用在其中扮演的地位也越来越重要,比如Web支付系统.Web P2P系统.Web货币系统等.对于这些金融系统来讲,安全的重要性是不言 ...

  8. 基本的传染病模型:SI、SIS、SIR及其Python代码实现

    本文主要参考博客:http://chengjunwang.com/en/2013/08/learn-basic-epidemic-models-with-python/.该博客有一些笔误,并且有些地方 ...

  9. [POJ2104/HDU2665]Kth Number-主席树-可持久化线段树

    Problem Kth Number Solution 裸的主席树,模板题.但是求k大的时候需要非常注意,很多容易写错的地方.卡了好久.写到最后还给我来个卡空间. 具体做法参见主席树论文<可持久 ...

  10. 基于pytorch实现word2vec

    一.介绍 word2vec是Google于2013年推出的开源的获取词向量word2vec的工具包.它包括了一组用于word embedding的模型,这些模型通常都是用浅层(两层)神经网络训练词向量 ...