Commons IO
环境的搭建
到apache(阿帕奇)下载Commos IO的学习文档,学习jar和source源码
主要学习FileUtils
调用FileUtils更加简单
利用FileUtils统计文件、目录的大小
package com.sxt.commons;
import org.apache.commons.io.FileUtils;
import java.io.File;
/**
* 大小
*/
public class CIOTest01 {
public static void main(String[] args) {
//文件的大小
long len= FileUtils.sizeOf(new File("src/com/sxt/commons/CIOTest01.java"));
System.out.println(len);
//目录的大小
len=FileUtils.sizeOf(new File("C:/Users/86199/IdeaProjects/IO-study03"));
System.out.println(len);
}
}
利用FileUtils遍历子孙级
利用FileUtils.listFiles返回文件夹下的文件路径
EmptyFileFilter.NOT_EMPTY过滤器,可以过滤空文件
FileFilterUtils.or(new SuffixFileFilter(“java”),new SuffixFileFilter(“class”),EmptyFileFilter.NOT_EMPTY)
是保留java后缀和class后缀的文件且过滤为空的文件
null表示只遍历文件夹下的一层
DirectoryFileFilter.INSTANCE表示要文件夹下的子孙级
for循环遍历: for (File file:files) {
System.out.println(file.getAbsoluteFile());
}
package com.sxt.commons;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.*;
import java.io.File;
import java.io.FileFilter;
import java.util.Collection;
/**
* 列出子孙级
*/
public class CIOTest02 {
public static void main(String[] args) {
Collection<File> files=FileUtils.listFiles(new File("C:/Users/86199/IdeaProjects/IO-study03"),
EmptyFileFilter.NOT_EMPTY,null);
for (File file:files) {
System.out.println(file.getAbsoluteFile());
}
System.out.println("=======================================");
files=FileUtils.listFiles(new File("C:/Users/86199/IdeaProjects/IO-study03"),
EmptyFileFilter.NOT_EMPTY, DirectoryFileFilter.INSTANCE);
for (File file:files) {
System.out.println(file.getAbsoluteFile());
}
System.out.println("=======================================");
files=FileUtils.listFiles(new File("C:/Users/86199/IdeaProjects/IO-study03"),
new SuffixFileFilter("java"), DirectoryFileFilter.INSTANCE);
for (File file:files) {
System.out.println(file.getAbsoluteFile());
}
System.out.println("=======================================");
files=FileUtils.listFiles(new File("C:/Users/86199/IdeaProjects/IO-study03"),
FileFilterUtils.or(new SuffixFileFilter("java"),new SuffixFileFilter("class"),EmptyFileFilter.NOT_EMPTY), DirectoryFileFilter.INSTANCE);
for (File file:files) {
System.out.println(file.getAbsoluteFile());
}
}
}
读取文件内容
1、FileUtils.readFileToString读取文件内容:
String msg = FileUtils.readFileToString(new File(“emp.txt”),“UTF-8”);
2、同样通过FileUtils.readFileToByteArray也可以读取到字节数组中:
byte[] datas=FileUtils.readFileToByteArray(new File(“emp.txt”));
3、通过FileUtils.readLines逐行读取到容器通过for循环遍历出来也可以:
List lists=FileUtils.readLines(new File(“emp.txt”),“UTF-8”);
4、还有一个类似于迭代器的FileUtils.lineIterator通过While循环出来:
LineIterator it=FileUtils.lineIterator(new File(“emp.txt”),“UTF-8”);
package com.sxt.commons;
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 CIOTest03 {
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);
System.out.println("================");
//逐行读取到容器
List<String> lists=FileUtils.readLines(new File("emp.txt"),"UTF-8");
for (String list:lists) {
System.out.println(list);
}
System.out.println("================");
LineIterator it=FileUtils.lineIterator(new File("emp.txt"),"UTF-8");
while (it.hasNext()){
System.out.println(it.nextLine());
}
}
}
写出文件内容
1、利用 FileUtils.write=FileUtils.writeStringToFile写入文件内容:
FileUtils.write(new File(“happy.txt”),
“学习是一件伟大的事业\r”,“UTF-8”);
2、通过缓冲的字节数组写入 FileUtils.writeByteArrayToFile
FileUtils.writeByteArrayToFile(new File(“happy.txt”),
“你会发现是一件很美好的事\r”.getBytes(“UTF-8”),true);
3、逐行写入列表:
FileUtils.writeLines(new File(“happy.txt”),lists,"—",true);
package com.sxt.commons;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.LineIterator;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* 写出内容
*/
public class CIOTest04 {
public static void main(String[] args) throws IOException {
//写出文件
FileUtils.write(new File("happy.txt"),
"学习是一件伟大的事业\r","UTF-8");
FileUtils.writeStringToFile(new File("happy.txt"),
"需要我们一直坚持\r","UTF-8",true);
FileUtils.writeByteArrayToFile(new File("happy.txt"),
"你会发现是一件很美好的事\r".getBytes("UTF-8"),true);
//写出列表
List<String> lists=new ArrayList<>();
lists.add("马云");
lists.add("马化腾");
lists.add("弼马温");
FileUtils.writeLines(new File("happy.txt"),lists,"---",true);
}
}
拷贝
1、可以拷贝文件内容:
FileUtils.copyFile(new File(“p.png”),new File(“p-copy.png”))
2、可以把文件拷贝到目录里:
FileUtils.copyFileToDirectory(new File(“p.png”),new File(“lib”));
3、可以把目录拷贝到目录:
将lib当作子目录拷贝到lib2
FileUtils.copyDirectoryToDirectory(new File(“lib”),new File(“lib2”));
4、拷贝目录: 将lib打开把里面的内容拷贝到lib2
FileUtils.copyDirectory(new File(“lib”),new File(“lib2”));
5、拷贝URL到文件:
FileUtils.copyURLToFile(new URL(url),new File(“marvel.jpg”));
6、IO拷贝源码:
String datas= IOUtils.toString(new URL(“https://www.163.com”),“gbk”);
package com.sxt.commons;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
/**
* 拷贝
*/
public class CIOTest05 {
public static void main(String[] args) throws IOException {
//拷贝文件
FileUtils.copyFile(new File("p.png"),new File("p-copy.png"));
//拷贝文件到目录
FileUtils.copyFileToDirectory(new File("p.png"),new File("lib"));
//拷贝目录到目录,将lib当作子目录拷贝到lib2
FileUtils.copyDirectoryToDirectory(new File("lib"),new File("lib2"));
//拷贝目录,将lib打开把里面的内容拷贝到lib2
FileUtils.copyDirectory(new File("lib"),new File("lib2"));
//拷贝URL内容
String url="https://pic2.zhimg.com/v2-7d01cab20858648cbf62333a7988e6d0_qhd.jpg";
FileUtils.copyURLToFile(new URL(url),new File("marvel.jpg"));
String datas= IOUtils.toString(new URL("https://www.163.com"),"gbk");
System.out.println(datas);
}
}