Commons IO
Commons IO是apache的一个开源的工具包,封装了IO操作的相关类,使用Commons IO可以很方便的读写文件,url源代码等.封装了很多处理io流和文件的方法,可以大大简化我们处理io流和操作文件的代码。从common-io的官方使用文档可以看出,它主要分为工具类、尾端类、行迭代器、文件过滤器、文件比较器和扩展流。
官网地址:http://commons.apache.org/proper/commons-io/
FileUtils的使用
package com.wang.dmeo;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.util.List;
public class MyTest2 {
public static void main(String[] args) throws IOException {
//复制文件
File file = new File("E:\\大合唱.mp3");
File file1 = new File("复制的歌.mp3");
FileUtils.copyFile(file,file1);
System.out.println("复制成功");
//删除文件
/*File a = new File("A");
FileUtils.forceDelete(a);*/
//比较文件内容
File file2 = new File("图片1.png");
File file3 = new File("图片2.png");
boolean b = FileUtils.contentEquals(file2, file3);
System.out.println(b);
//移动文件
File f4 = new File("图片1.png");
File f5 = new File("E:");
FileUtils.moveToDirectory(f4,f5,true);//参数true的意思是,允许创建文件
//读取文件内容
File f6 = new File("A.txt");
String string = FileUtils.readFileToString(f6,"UTF-8");
List<String> strings = FileUtils.readLines(f6,"UTF-8");
for (String s : strings) {
System.out.println(s);
}
System.out.println(strings);
System.out.println(string);
//写入文件内容
File f7 = new File("A.txt");
FileUtils.writeStringToFile(f7,"我在吃饭","UTF-8",true);
}
}
利用FileUtils.copyURLToFile和多线程在网上下载文件
package com.wang.dmeo;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.concurrent.*;
public class MyTest implements Callable<Boolean> {
private String url;
private String name;
public MyTest(String url,String name){
this.url=url;
this.name=name;
}
@Override
public Boolean call() throws Exception {
WebDownLoader webDownLoader = new WebDownLoader();
webDownLoader.downloader(url,name);
System.out.println("下载了图片"+name);
return true;
}
public static void main(String[] args) throws ExecutionException, InterruptedException {
MyTest myTest1 = new MyTest("http://sc0.hao123img.com/res/r/image/2017-09-27/297f5edb1e984613083a2d3cc0c5bb36.png","图片1.png");
MyTest myTest2 = new MyTest("http://sc0.hao123img.com/res/r/image/2017-09-26/352f1d243122cf52462a2e6cdcb5ed6d.png", "图片2.png");
MyTest myTest3 = new MyTest("http://sc1.hao123img.com/res/r/image/2018-09-29/208e4ce8af2846d584cbe55b245a4134.jpeg", "图片3.png");
//创建执行服务
ExecutorService service = Executors.newFixedThreadPool(3);
//提交任务
Future<Boolean> submit = service.submit(myTest1);
Future<Boolean> submit1 = service.submit(myTest2);
Future<Boolean> submit2 = service.submit(myTest3);
Boolean b1 = submit.get();
Boolean b2 = submit1.get();
Boolean b3 = submit2.get();
System.out.println(b1);
System.out.println(b2);
System.out.println(b3);
service.shutdown();//一定要关闭,不然程序还在执行
}
}
class WebDownLoader{
public void downloader(String url,String name){
try {
FileUtils.copyURLToFile(new URL(url),new File(name));
} catch (IOException e) {
e.printStackTrace();
//一般我们在这打印输出信息,方便我们查找异常
System.out.println("downloader方法出现异常");
}
}
}
import java.io.File;
import java.io.IOException;
public class MyTest3 {
public static void main(String[] args) throws IOException {
//行迭代器
File file = new File("A.txt");
LineIterator lineIterator = FileUtils.lineIterator(file);
while (lineIterator.hasNext()){
System.out.println(lineIterator.nextLine());
}
lineIterator.close();
}
}
文件过滤器
import org.apache.commons.io.filefilter.EmptyFileFilter;
import org.apache.commons.io.filefilter.SuffixFileFilter;
import java.io.File;
public class MyTest4 {
public static void main(String[] args) {
File file = new File("E:");
//空内容文件夹过滤
String[] list = file.list(EmptyFileFilter.NOT_EMPTY);
for (String string : list) {
System.out.println(string);
}
//文件名称后缀过滤
String[] list1 = file.list(new SuffixFileFilter(".mp3"));
for (String string : list1) {
System.out.println(string);
}
}
}
文件比较器
package com.wang.dmeo;
import org.apache.commons.io.comparator.NameFileComparator;
import org.apache.commons.io.comparator.PathFileComparator;
import java.io.File;
public class MyTest5 {
public static void main(String[] args) {
File file = new File("A.txt");
File file1 = new File("A.txt");
//文件名称比较
int compare = NameFileComparator.NAME_COMPARATOR.compare(file1,file);
System.out.println(compare);
//文件路径比较
int compare1 = PathFileComparator.PATH_COMPARATOR.compare(file1, file);
System.out.println(compare1);
}
}