java面向对象之IO篇(4)IFileUtils【最重要的IO知识】

只谈情不闲聊 提交于 2020-02-26 18:27:33

FileUtils

一.入门案例

该工具不是Java提供的,必须导包

举例使用:

 

 

二. 文件读方法

1.文件读写方法

方法名

描述

byte[] readFileToByteArray(File file)

读取file文件数据到字节数组中。

String readFileToString(File file, String encoding)

读取file文件数据到字符串中,使用encoding指定的字符编码读取。

List<String> readLines(File file, String encoding)

读取file文件数据到字符串集合中,集合中每个字符串对应文件中一行数据。使用encoding指定的字符编码读取。

 

举例使用:


    public static void main(String[] args) throws IOException {
        //1、 读取纯文本
        String x1 = FileUtils.readFileToString(new File("测试01.txt"), "utf-8");
        System.out.println(x1);
        //2、 读取纯文本,把文件中,一行数据读取成一个字符串
        List<String> list2 = FileUtils.readLines(new File("测试01.txt"), "utf-8");
        for (String x : list2) {
            System.out.println(x);
        }
        //3、读取所有文件(文本、音乐、图片、视频...)
        byte[] arr = FileUtils.readFileToByteArray(new File("测试01.txt"));
    }

 

 

 

2. 文件写出方法

方法名

描述

void writeByteArrayToFile(File file, byte[] data)

把字节数组data写入到文件file中,本方法会覆盖文件原有内容。

void writeByteArrayToFile(File file, byte[] data, boolean append)

把字节数组data写入到文件file中。

  1. append:
  • true:不会覆盖文件原有内容,而且把data追加到文件原有内容之后;
  • false:会覆盖文件原有内容。

void writeByteArrayToFile(File file, byte[] data, int off,int len,boolean append)

把字节数组data写入到文件file中。

off:向外写出的起始索引(从0开始,包含起始)

len:向外写出几个字节

例如:off=0 len=3 即写出 0,1,2这三个索引对应的字节

例如:off=3 len=3 即写出3,4,5这三个索引对应的字节

  1. append:
  • true:不会覆盖文件原有内容,而且把data追加到文件原有内容之后;
  • false:会覆盖文件原有内容。
  •  

void writeStringToFile(File file, String data, String encoding)

把字符串data写入到文件file中,使用encoding指定的编码格式。本方法会覆盖文件原有内容。

void writeStringToFile(File file, String data, String encoding, boolean append)

把字符串data写入到文件file中,使用encoding指定的编码格式。

  1. append:
  • true:不会覆盖文件原有内容,而且把data追加到文件原有内容之后;
  • false:会覆盖文件原有内容。

 

举例使用:

public static void main(String[] args) throws IOException {
        /*
        //1、向 课上案例01.txt 写出 0123456789
        byte[] arr = "0123456789".getBytes("utf-8");
        FileUtils.writeByteArrayToFile(new File("课上案例01.txt"),arr);
        //2、向 课上案例02.txt 写出 0123456789 ,要求不覆盖,进行追加操作
        byte[] arr2 = "101112131415".getBytes("utf-8");
        FileUtils.writeByteArrayToFile(new File("课上案例02.txt"),arr2,true);
        */

        //3、向 课上案例03.txt 写出 abcdefg ,要求覆盖操作.
        //一个汉字,utf-8码表占用3个字节  英文、数字默认占1个字节
        //要求只写出部分 字节数组内容
        byte[] arr3 = "abcdefg".getBytes("utf-8");
        //向 课上案例03.txt 写出字节数组。  从0索引开始,写3个字节出去。 0、1、2
        //abc
//        FileUtils.writeByteArrayToFile(new File("课上案例03.txt"),arr3,0,3,false);
        //def
//        FileUtils.writeByteArrayToFile(new File("课上案例03.txt"),arr3,3,3,false);
        //g
//        FileUtils.writeByteArrayToFile(new File("课上案例03.txt"),arr3,6,1,false);

        int index = 0;
        int len = 3;
        FileUtils.writeByteArrayToFile(new File("案例03.txt"),arr3,index,len,false);//abc

        index+=len;
        FileUtils.writeByteArrayToFile(new File("案例03.txt"),arr3,index,len,false);//def

        //想直接切割到 字节数组的末尾   defg
        len =arr3.length-index;
        FileUtils.writeByteArrayToFile(new File("案例03.txt"),arr3,index,len,false);//defg
    }

 

 

3. 目录操作方法

方法名

描述

void cleanDirectory(File directory)

清空指定目录下所有内容,不会删除目录本身。

void deleteDirectory(File directory)

删除指定目录下所有内容,同时会删除目录本身。

void copyDirectory(File srcDir, File destDir)

srcDir目录下的所有内容复制到destDir目录下。

void copyToDirectory(File src, File destDir)

src文件或目录(及目录下所有内容)一并复制到destDir目录下。

void copyFile(File srcFile, File destFile)

srcFile文件的内容复制到destFile文件中。

destFile文件不存在则创建,存在则覆盖

Collection<File> listFiles(File dir, String[] exts, boolean recursive)

查找dir目录下指定扩展名文件。

  1. dir:要查找的目录
  2. exts:指定的扩展名,若为null表示查找所有
  3. recursive:为false表示不查找子目录

Collection<File> listFilesAndDirs(File dir, IOFileFilter fileFilter, IOFileFilter dirFilter)

查找dir目录下文件和目录。

 

  1. dir:要查找的目录
  2. fileFilter:
  • TrueFileFilter.INSTANCE:表示查找所有文件
  • FalseFileFilter.INSTANCE:表示不查找任何文件
  • 其他需求需要自行实现IOFileFilter接口
  1. dirFilter:
  • TrueFileFilter.INSTANCE:表示查找所有目录
  • FalseFileFilter.INSTANCE:表示不查找任何目录
  • 其他需求需要自行实现IOFileFilter接口

moveDirectory(File srcDir, File destDir)

srcDir目录以及目录所有内容

移动 并变成destDir目录。

movetoDirectory(File src, File destDir, boolean createDestDir)

src文件或目录剪切到destDir目录下

  1. createDestDir:
  • true:当destDir目录不存在时创建该目录链;
  • false:当destDir目录不存在时抛出IOException异常

long sizeOf(File file)

读取文件或目录的字节数。(注意:File类的length()方法不能读取目录的字节数)

 

举例使用:

//删除 当前项目中的   课上案例05 文件夹下所有内容
FileUtils.cleanDirectory(new File("课上案例05"));
//删除 当前项目中的   课上案例05 文件夹下所有内容
FileUtils.deleteDirectory(new File("课上案例05"));

 

//把当前项目下的11目录中的所有内容 ,复制到 22目录
FileUtils.copyDirectory(new File("11"),new File("22"));
//把当前项目下的11目录及目录下的所有内容 ,一并复制到 22目录中
FileUtils.copyToDirectory(new File("11"),new File("22"));
//复制文件: 把11目录中的11.txt 复制到 项目根下
FileUtils.copyFile(new File("11\\11.txt"),new File("11.txt"));

 

 

public static void main(String[] args) throws IOException {
        //1、
        //把33目录,移动到44目录中  (移动不改名)
//        FileUtils.moveDirectory(new File("33"),new File("44\\33"));
        //把33目录,移动到44目录中 改名为333(移动并改名)
//        FileUtils.moveDirectory(new File("33"),new File("44\\333"));
        // 把333目录,原地改为33目录(原地改名)
//        FileUtils.moveDirectory(new File("333"),new File("33"));
        //2、把33目录中的33.txt 移动到 44目录中
//        FileUtils.moveToDirectory(new File("33\\33.txt"),new File("44\\11\\22\\33"),true);

        //3、查看 课上案例05  目录大小 (字节)
        long x = FileUtils.sizeOf(new File("课上案例05"));
        System.out.println(x);

    }

 

 

总结:

方法名

描述

byte[] readFileToByteArray(File file)

读取file文件数据到字节数组中。

String readFileToString(File file, String encoding)

读取file文件数据到字符串中,使用encoding指定的字符编码读取。

List<String> readLines(File file, String encoding)

读取file文件数据到字符串集合中,集合中每个字符串对应文件中一行数据。使用encoding指定的字符编码读取。

   

 

方法名

描述

void writeByteArrayToFile(File file, byte[] data)

把字节数组data写入到文件file中,本方法会覆盖文件原有内容。

void writeByteArrayToFile(File file, byte[] data, boolean append)

把字节数组data写入到文件file中。

  1. append:
  • true:不会覆盖文件原有内容,而且把data追加到文件原有内容之后;
  • false:会覆盖文件原有内容。

void writeByteArrayToFile(File file, byte[] data, int off,int len,boolean append)

把字节数组data写入到文件file中。

off:向外写出的起始索引(从0开始,包含起始)

len:向外写出几个字节

例如:off=0 len=3 即写出 0,1,2这三个索引对应的字节

例如:off=3 len=3 即写出3,4,5这三个索引对应的字节

  1. append:
  • true:不会覆盖文件原有内容,而且把data追加到文件原有内容之后;
  • false:会覆盖文件原有内容。

void writeStringToFile(File file, String data, String encoding)

把字符串data写入到文件file中,使用encoding指定的编码格式。本方法会覆盖文件原有内容。

void writeStringToFile(File file, String data, String encoding, boolean append)

把字符串data写入到文件file中,使用encoding指定的编码格式。

  1. append:
  • true:不会覆盖文件原有内容,而且把data追加到文件原有内容之后;
  • false:会覆盖文件原有内容。

方法名

描述

void cleanDirectory(File directory)

清空指定目录下所有内容,不会删除目录本身。

void deleteDirectory(File directory)

删除指定目录下所有内容,同时会删除目录本身。

void copyDirectory(File srcDir, File destDir)

srcDir目录下的所有内容复制到destDir目录下。

void copyToDirectory(File src, File destDir)

src文件或目录(及目录下所有内容)一并复制到destDir目录下。

void copyFile(File srcFile, File destFile)

srcFile文件的内容复制到destFile文件中。

destFile文件不存在则创建,存在则覆盖

Collection<File> listFiles(File dir, String[] exts, boolean recursive)

查找dir目录下指定扩展名文件。

  1. dir:要查找的目录
  2. exts:指定的扩展名,若为null表示查找所有
  3. recursive:为false表示不查找子目录

Collection<File> listFilesAndDirs(File dir, IOFileFilter fileFilter, IOFileFilter dirFilter)

查找dir目录下文件和目录。

 

  1. dir:要查找的目录
  2. fileFilter:
  • TrueFileFilter.INSTANCE:表示查找所有文件
  • FalseFileFilter.INSTANCE:表示不查找任何文件
  • 其他需求需要自行实现IOFileFilter接口
  1. dirFilter:
  • TrueFileFilter.INSTANCE:表示查找所有目录
  • FalseFileFilter.INSTANCE:表示不查找任何目录
  • 其他需求需要自行实现IOFileFilter接口

moveDirectory(File srcDir, File destDir)

srcDir目录以及目录所有内容

移动 并变成destDir目录。

movetoDirectory(File src, File destDir, boolean createDestDir)

src文件或目录剪切到destDir目录下

  1. createDestDir:
  • true:当destDir目录不存在时创建该目录链;
  • false:当destDir目录不存在时抛出IOException异常

long sizeOf(File file)

读取文件或目录的字节数。(注意:File类的length()方法不能读取目录的字节数)

 

 

 

请给努力中的自己点个赞哦!

每天进步一点点`~~~~~

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!