Io流commons

本文详细介绍Apache CommonsIO工具包的使用方法,包括文件复制、删除、比较、移动及读写操作,展示如何利用FileUtils类简化IO流处理和文件操作,并通过实例演示多线程下载文件技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值