文档章节

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

煌sir
 煌sir
发布于 02/14 21:53
字数 2467
阅读 142
收藏 0

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()方法不能读取目录的字节数)

 

 

 

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

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

© 著作权归作者所有

煌sir

煌sir

粉丝 14
博文 48
码字总数 32518
作品 0
深圳
私信 提问
加载中

评论(0)

【给初学者】Android学习路线

很多朋友都对学习路线问题感到迷茫,特别是还在上学的朋友们。在这里就详细的为大家介绍一下。 1.Java基础 很多朋友一上手就开始学习Android,似乎太着急了一些。Android应用程序开发是以Jav...

Jimmy Xie
2012/09/08
762
1
给Java新手的一些建议——Java知识点归纳(Java基础部分)

  写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,...

Java工程师-10
2017/05/24
864
2
你必须掌握的 21 个 Java 核心技术!(干货)

点击上方“java进阶架构师”,选择右上角“置顶公众号” 20大进阶架构专题每日送达 51闲来无事,师长一向不(没)喜(有)欢(钱)凑热闹,倒不如趁着这时候复盘复盘。而写这篇文章的目的是想...

Java进阶架构师
2019/05/03
0
0
Java编程基础知识点和技术点归纳

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

Java小辰
2018/05/23
0
0
你必须掌握的 21 个 Java 核心技术!

你必须掌握的 21 个 Java 核心技术! Java技术栈 2018-10-29 写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,希望可以给大家一些经验,能让大家更好学习和使用Java。 ...

浮躁的码农
2019/04/15
180
0

没有更多内容

加载失败,请刷新页面

加载更多

初学数据结构--堆和优先队列

初学数据结构--堆和优先队列 在之前的那两章详细的向各位介绍了二分搜索树这种数据结构,同时我们使用二分搜索树实现了集合和映射这两个相对来讲更加高层的数据结构。那么树,这种数据结构本...

loubobooo
16分钟前
43
0
Elasticsearch7.3.2下载安装

1. es镜像下载 https://thans.cn/mirror/elasticsearch.html 2. rz上传到/usr/local 3. 解压 tar -zxf elasticsearch-7.3.2-linux-x86_64.tar.gz 4. 配置elasticsearch.yml cd /usr/local......

joininjoy
18分钟前
34
0
iOS面试题--性能优化篇

1.造成tableView卡顿的原因有哪些? 1.最常用的就是cell的重用, 注册重用标识符 如果不重用cell时,每当一个cell显示到屏幕上时,就会重新创建一个新的cell 如果有很多数据的时候,就会堆积...

G_
25分钟前
44
0
第 430 期 Python 周刊

文章,教程和讲座 使你的 Python 程序运行快一点 链接: https://martinheinz.dev/blog/13 不喜欢 Python 语言的人总是说它的运行速度很慢。对于特定的程序(无论使用何种编程语言), 它的快慢...

iCodeBugs
35分钟前
75
0
Linux中修改环境变量及生效方法

Linux中修改环境变量及生效方法 方法一:   在/etc/profile文件中添加变量【对所有用户生效(永久的)】   用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且...

突突突酱
36分钟前
34
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部