为了账号安全,请及时绑定邮箱和手机立即绑定

Apache-commons-io包的使用及常用方法

标签:
Java


      首先,我们要下载FileUtils相关的Apache-commons-io jar包以及api文档。FileUtils类库的下载页面在:

      http://commons.apache.org/proper/commons-io/download_io.cgi

image.png

 FieUtils类中常用方法的介绍

      打开FileUtils的api文档,我们抽出一些工作中比较常用的方法,进行总结和讲解。总结如下:

      cleanDirectory:清空目录,但不删除目录。

      contentEquals:比较两个文件的内容是否相同。

      copyDirectory:将一个目录内容拷贝到另一个目录。可以通过FileFilter过滤需要拷贝的 文件。

      copyFile:将一个文件拷贝到一个新的地址。

      copyFileToDirectory:将一个文件拷贝到某个目录下。

      copyInputStreamToFile:将一个输入流中的内容拷贝到某个文件。

      deleteDirectory:删除目录。

      deleteQuietly:删除文件。

      listFiles:列出指定目录下的所有文件。

      openInputSteam:打开指定文件的输入流。

      readFileToString:将文件内容作为字符串返回。

      readLines:将文件内容按行返回到一个字符串数组中。

      size:返回文件或目录的大小。

      write:将字符串内容直接写到文件中。

      writeByteArrayToFile:将字节数组内容写到文件中。

      writeLines:将容器中的元素的toString方法返回的内容依次写入文件中。

      writeStringToFile:将字符串内容写到文件中。

示例:

1、统计文件或者目录大小

public static void main(String[] args) {

        //文件大小

        long len =FileUtils.sizeOf(new File(".../../../XX.java"));

        System.out.println(len);

        //目录大小

        len = FileUtils.sizeOf(new File("D:/../../../study04"));

        System.out.println(len);

    }

2、列出子孙级目录或文件,带有过滤功能

    public static void main(String[] args) {

        Collection<File> files =FileUtils.listFiles(new File("D:\\java300\\IO_study04"),

                EmptyFileFilter.NOT_EMPTY, null);

        for (File file : files) {

            System.out.println(file.getAbsolutePath());

        }

        System.out.println("---------------------");

         files =FileUtils.listFiles(new File("D:\\..\\IO_study04"),

                    EmptyFileFilter.NOT_EMPTY, DirectoryFileFilter.INSTANCE);

        for (File file : files) {

            System.out.println(file.getAbsolutePath());

        }

        System.out.println("---------------------");

         files =FileUtils.listFiles(new File("D:\\..\\IO_study04"),

                    new SuffixFileFilter("java"), DirectoryFileFilter.INSTANCE);

        for (File file : files) {

            System.out.println(file.getAbsolutePath());

        }

        System.out.println("---------------------");

         files =FileUtils.listFiles(new File("D:\\..\\IO_study04"),

                    FileFilterUtils.or(new SuffixFileFilter("java"),

                            new SuffixFileFilter("class"),EmptyFileFilter.EMPTY), DirectoryFileFilter.INSTANCE);

        for (File file : files) {

            System.out.println(file.getAbsolutePath());

        }

        

        System.out.println("---------------------");

         files =FileUtils.listFiles(new File("D:\\..\\IO_study04"),

                    FileFilterUtils.and(new SuffixFileFilter("java"),

                            EmptyFileFilter.NOT_EMPTY), DirectoryFileFilter.INSTANCE);

        for (File file : files) {

            System.out.println(file.getAbsolutePath());

        }

    }

3、读物文件

    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());

        }

        

    }

4、写出内容

    public static void main(String[] args) throws IOException {

        //写出文件

        FileUtils.write(new File("happy.sxt"), "学习是一件伟大的事业\r\n","UTF-8");

        FileUtils.writeStringToFile(new File("happy.sxt"), "学习是一件辛苦的事业\r\n","UTF-8",true);

        FileUtils.writeByteArrayToFile(new File("happy.sxt"), "学习是一件幸福的事业\r\n".getBytes("UTF-8"),true);

        

        //写出列表

        List<String> datas =new ArrayList<String>();

        datas.add("马云");

        datas.add("马化腾");

        

        FileUtils.writeLines(new File("happy.sxt"), datas,"--------------",true);

    }

5、复制文件

    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"));

        //复制目录到目录

        //FileUtils.copyDirectoryToDirectory(new File("lib"),new File("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("http://www.163.com"), "gbk");

        System.out.println(datas);

    }

©著作权归作者所有:来自51CTO博客作者huingsn的原创作品,如需转载,请注明出处,否则将追究法律责任


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消