目录
CommonsIO
前言
(1)自己写的java程序是 class,多个class组成 jar,多个jar组成 组件,多个组件形成框架。小细节:组件是可以主动选择的,框架是被动的。
(2)Apache软件基金会(ASF),是专门为支持开源软件项目而办的一个非盈利性组织,官方网站 www.apache.org 。
(3)JDK中提供的文件操作相关的类,但是功能都非常基础,进行复杂操作时需要做大量编程工作。 Apache-commons工具包中提供了IOUtils/FileUtils,可以让我们非常方便的对文件和目录进行操作。
FileUtils
(1)下载工具包
http://commons.apache.org/proper/commons-io/
download 最新版本
第一个tar.gz是linux版本,第二个zip是windows版本
下载解压后:
标蓝的两个文件要复制到项目中
然后把路径添加到项目中,具体操作
1.点击 File -> Project Structure ->“Modules”
2.在 “Dependencies” 标签界面下,点击右边绿色的 “+”号,选择第一个选项“JARs or directories...”,选择相应的jar包,点“OK”,jar包添加成功
3. 刚刚新加的jar包打勾,点击OK回到项目界面,完成。
(2)尝试使用API
import org.apache.commons.io.FileUtils;
import java.io.*;
public class CommonIOTest01 {
public static void main(String[] args) {
//文件大小
long len = FileUtils.sizeOf(new File("D:/Java/IO/abc.txt"));
System.out.println(len);
//目录大小
len = FileUtils.sizeOf(new File("D:/Java/IO"));
System.out.println(len);
}
}
(3)读取文件地址
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.DirectoryFileFilter;
import org.apache.commons.io.filefilter.EmptyFileFilter;
import org.apache.commons.io.filefilter.SuffixFileFilter;
import java.io.*;
import java.util.Collection;
public class CommonIOTest01 {
public static void main(String[] args) {
//列出子孙级
Collection<File> files = FileUtils.listFiles(new File("D:/Java/IO"),
EmptyFileFilter.NOT_EMPTY,null); //不要空文件和子孙级
for (File file:files){
System.out.println(file);
}
System.out.println("_____________");
files = FileUtils.listFiles(new File("D:/Java/IO"),
EmptyFileFilter.NOT_EMPTY, DirectoryFileFilter.INSTANCE); //不要空文件,要文件的子孙级
for (File file:files){
System.out.println(file);
}
//只看文件后缀是txt的
System.out.println("_____________");
files = FileUtils.listFiles(new File("D:/Java/IO"),
new SuffixFileFilter("txt"), DirectoryFileFilter.INSTANCE); //不要空文件,要文件的子孙级
for (File file:files){
System.out.println(file);
}
}
}
(4)读取文件内容
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.LineIterator;
import java.io.File;
import java.io.IOException;
import java.util.List;
/*
*读取文件内容
* */
public class CommonIOTest02 {
public static void main(String[] args) throws IOException {
//读取文件
String msg = FileUtils.readFileToString(new File("emp.txt"),"UTF-8");
System.out.println(msg);
byte[] datas = FileUtils.readFileToByteArray(new File("emp.txt"));
System.out.println(datas.length);
//逐行读取
List<String> msgs = FileUtils.readLines(new File("emp.txt"),"UTF-8");
for(String string:msgs){
System.out.println(string);
}
//迭代器读取
LineIterator it = FileUtils.lineIterator(new File("emp.txt"),"UTF-8");
while(it.hasNext()){
System.out.println(it.nextLine());
}
}
}
(5)写出文件内容
import org.apache.commons.io.FileUtils;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
/*
* 写出内容
* */
public class CommonIOTest03 {
public static void main(String[] args) throws IOException {
//写出文件
FileUtils.write(new File("happy.txt"),"学习使人快乐\r\n","UTF-8",true); //最后一个元素 是否追加元素,否是从头来
FileUtils.writeByteArrayToFile(new File("happy.txt"),"学习使人快乐\r\n".getBytes("UTF-8"),true);
//写出列表
List<String> datas = new ArrayList<String>();
datas.add("高一");
datas.add("高二");
datas.add("高三");
FileUtils.writeLines(new File("happy.txt"),datas,"+",true);
}
}
(6)拷贝
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
/*
* 拷贝文件
* */
public class CommonIOTest04 {
public static void main(String[] args) throws IOException {
//复制文件
FileUtils.copyFile(new File("happy.txt"),new File("happy-copy.txt"));
//复制文件到目录
FileUtils.copyFileToDirectory(new File("happy.txt"),new File("lib"));
}
}