IOUtils和FileUtils的学习笔记
pom文件导入依赖import org.apache.commons.io.FileUtils;
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
https://blog.csdn.net/quanzhanjavabiji/article/details/73936240
FieUtils类中常用方法的介绍
打开FileUtils的api文档,我们抽出一些工作中比较常用的方法,进行总结和讲解。总结如下:
cleanDirectory:清空目录,但不删除目录
contentEquals:比较两个文件的内容是否相同
copyDirectory:将一个目录内容拷贝到另一个目录。可以通过FileFilter过滤需要拷贝的文件。
copyFile:将一个文件拷贝到一个新的地址
copyFileToDirectory:将一个文件拷贝到某个目录下
copyInputStreamToFile:将一个输入流中的内容拷贝到某个文件
deleteDirectory:删除目录
deleteQuietly:删除文件
listFiles:列出指定目录下的所有文件
openInputSteam:打开指定文件的输入流
readFileToString:将文件内容作为字符串返回
readLines:将文件内容按行返回到一个字符串数组中
size:返回文件或目录的大小
write:将字符串内容直接写到文件中
writeByteArrayToFile: 将字节数组内容写到文件中
writeLines:将容器中的元素的toString方法返回的内容依次写入文件中
writeStringToFile:将字符串内容写到文件中
代码演示
【示例1】:读出某个文件的内容,并打印在控制台上(只需一行代码!)
package com.bjsxt.test.fileutils;
import java.io.File;
import org.apache.commons.io.FileUtils;
public class Demo01 {
public static void main(String[] args) throws Exception {
String content = FileUtils.readFileToString(new File("d:/a.txt"),"gbk");
System.out.println(content);
}
}
示例1 运行效果图
【示例2】:目录拷贝,并且使用FileFilter过来目录和文件名字html结尾的文件。
package com.bjsxt.test.fileutils;
import java.io.File;
import java.io.FileFilter;
import org.apache.commons.io.FileUtils;
public class Demo02 {
public static void main(String[] args) throws Exception {
FileUtils.copyDirectory(new File("d:/aaa"), new File("d:/bbb"), new FileFilter() {
@Override
public boolean accept(File pathname) {
//拷贝目录或html结尾的文件
if(pathname.isDirectory()||pathname.getName().endsWith("html")){
return true;
}else{
return false;
}
}
});
}
}
示例2 目录拷贝结果图
IOUtils妙用
打开IOUtils的api文档,我们发现他的方法大部分都是重载的。所以,我们理解他的方法并不是难事。因此,对于他方法的用法总结如下:
buffer方法:将传入的流进行包装,变成缓冲流。并可以通过参数指定缓冲大小。
closeQueitly方法:关闭流
contentEquals方法:比较两个流中的内容是否一致
copy方法:将输入流中的内容拷贝到输出流中,并可以指定字符编码。
copyLarge方法:将输入流中的内容拷贝到输出流中,适合大于2G内容的拷贝。
lineIterator方法:返回可以迭代每一行内容的迭代器
read方法:将输入流中的部分内容读入到字节数组中
readFully方法:将输入流中的所有内容读入到字节数组中
readLine方法:读入输入流内容中的一行
toBufferedInputStream,toBufferedReader:将输入转为带缓存的输入流
toByteArray,toCharArray:将输入流的内容转为字节数组、字符数组。
toString:将输入流或数组中的内容转化为字符串
write方法:向流里面写入内容
writeLine方法:向流里面写入一行内容
我们没有必要对每个方法做测试,只是演示一下读入d:/a.txt文件内容到程序中,并转成String对象,打印出来。
package com.bjsxt.test.fileutils;
import java.io.*;
import org.apache.commons.io.IOUtils;
public class Demo03 {
public static void main(String[] args) throws Exception {
String content = IOUtils.toString(new FileInputStream("d:/a.txt"),"gbk");
System.out.println(content);
}
}
readLines
readLines方法可以从流中读取内容,并转换为String的list
readLines(inputstream)
readLines(inputstream,charset)
readLines(inputstream,encoding)
readLines(reader)
这个方法极大简化了之前原始的读取方法:
@Test
public void readLinesTest(){
try{
InputStream is = new FileInputStream("D://test1.txt");
List<String> lines = IOUtils.readLines(is);
for(String line : lines){
System.out.println(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
IOUtils和FileUtils的学习笔记的更多相关文章
- 尚学堂JAVA基础学习笔记
目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...
- Hadoop入门学习笔记---part4
紧接着<Hadoop入门学习笔记---part3>中的继续了解如何用java在程序中操作HDFS. 众所周知,对文件的操作无非是创建,查看,下载,删除.下面我们就开始应用java程序进行操 ...
- 【转】 Pro Android学习笔记(六九):HTTP服务(3):HTTP POST MultiPart
目录(?)[-] 建立测试环境 开发环境导入第三方JAR HTTP Post Multipart小例子 HTTP POST不仅可以通过键值对传递参数,还可以携带更为复杂的参数,例如文件.HTTP Po ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
随机推荐
- Python入门方法推荐,哪些基础知识必学?
很多想入门的小伙伴还不知道Python应该怎么学,哪些知识必学,今天我们就来盘点一下. 01.入门方法推荐 总体来讲,找一本靠谱的书,由浅入深,边看边练. 网上的学习教程有很多,多到不知道如何选择.所 ...
- TS写法
主题句常用句型: ...can/may... ...有助于/帮助.....,(定语从句) ...enable/allows sb. To do... By doing .....,...can.... ...
- 箭头函数,闭包函数中的this指向
在javscript中,this 是在函数运行时自动生成的一个内部指针,它指向函数的调用者. 箭头函数有些不同,它的this是继承而来, 默认指向在定义它时所处的对象(宿主对象),而不是执行时的对象. ...
- Vue专题-生命周期
有时候,我们需要在实例创建过程中进行一些初始化的工作,以帮助我们完成项目中更复杂更丰富的需求开发,针对这样的需求,Vue提供给我们一系列的钩子函数. 本文详细介绍了Vue实例在创建和销毁的过程中,我们 ...
- Activity组件(二):通过显式意图和隐式意图来跳转至第三方应用
一.显式意图来跳转到第三方应用 /** * 这个方法会在点击按钮的时候执行 * @param view */ public void skip2Browser(View view){ Log.d(TA ...
- iOS 直接使用16进制颜色
在做iOS开发时,一般我们会吸色,就是产品给的图我们一般会吸色,但是最近吸色时候,老大说有较大的颜色偏差,所以要求我们直接使用UI给出的额16进制颜色,你也可以搜索<RGB颜色值转换成十六进制颜 ...
- 微信小程序裁剪图片后上传
上传图片的时候调起裁剪页面,裁剪后再回调完成上传; 图片裁剪直接用we-cropper https://github.com/we-plugin/we-cropper we-cropper使用详细 ...
- logstash kafka的版本兼容问题
项目细节也就不说了 kafka + spark streaming >> kafka版本1.0,spark streaming也是依照kafka1.0开发的 这个kfk集群叫kfk_1.0 ...
- 多对多的三种创建方式-forms相关组件-钩子函数-cookie与session
多对多的三种创建方式 1.全自动(推荐使用的**) 优势:第三张可以任意的扩展字段 缺点:ORM查询不方便,如果后续字段增加更改时不便添加修改 manyToManyField创建的第三张表属于虚拟的, ...
- 解决python pip 出现read time out问题
出现read time out问题是一般由于python包被墙导致下载速度变慢,pip下载超时. 解决方法一: 添加 --default-timeout:自定义timeout时间,一般能解决大部分ti ...