day18_IO

本文详细介绍了Java中的IO流,包括字节流(如FileInputStream和FileOutputStream)用于处理二进制文件,字符流(如FileReader和FileWriter)用于文本文件,以及如何使用缓冲字节流和缓冲字符流提高效率。此外,还提到了HuTool库和匿名内部类的使用。
摘要由CSDN通过智能技术生成

复习

SimpleDateFormat类用来对日期格式化和解析

  • 格式化(format): 是将日期 --> 字符串
  • 解析(parse) : 是将 字符串 —> 日期

一、IO流

  • Input 输入
  • Output 输出
  • 流:是比喻,使用io流传输数据,数据就像水流在流动,(是以Java程序为主体向磁盘的操作,写就叫输出,读就叫输入)

1.2常用类

操作的文件类型不一样,使用的类不一样

  • 操作二进制文件(图片资源,图片,音频,视频)使用字节流
    • InputStream(抽象)----->子类FileInputStream:字节输入流
    • OutputStream(抽象)----->FileOutputStream:字节输出流
  • 操作字符文件(文本,txt),使用字符流
    • Reader(抽象)------>子类FileReader:字符输入流
    • Writer(抽象)------->子类FileWriter:字符输出流

常用方法

  • 凡是读取数据,方法名都是read()
  • 凡是写出数据,方法名都是write()
  • 但是无论读写,只要使用IO流,用完一定使用close()关闭流

1.3字节流

字节输入流

  • FileInputStream fis = new FileInputStream(“a.jpg”); 传入文件对象或者文件路径创建字节输入流,有异常要抛出

  • fis.read(); 读取数据(输入),read一次读取一个字节,读完到末尾返回-1

    • 一个一个读取太麻烦,有一个循环
    int d = -1;
    while((d = fis.read())!=-1){
    System.out.println(d);
    }
    fis.close(); // 操作完一定要关流
    
  • fis.close(); 操作完,一定要关流


字节输出流

  • FileOutputStream fos = new FileOutputStream(“b.txt”); 以指定文件创建输出流对象,文件不存在会创建出来,如果文件有内容,默认是覆盖
    • fos = new FileOutputStream(“b.txt”,true); 后面默认是false覆盖,为true就会追加

练习:拷贝图片

提示:拷贝图片就是读+写数据,是边读边写

public static void main(String[] args) throws IOException {
        // 读
        FileInputStream fis = new FileInputStream("E:\\text\\zuomian.jpg");
        // 写
        FileOutputStream fos = new FileOutputStream("E:\\22.jpg");

        // 边读边写
        int d = -1;
        while ((d =  fis.read())!= -1){
            fos.write(d);
        }
        fis.close();
        fos.close();
    }

1.4缓冲字节流

提供一个数组,一次读取数组长度多个数据,也可以一次写出数组长度多个数据

IO体系中提供了这么操作的类:缓冲字节流

  • 缓冲字节输入流:BufferedInputStream 默认创建的数组容量8192
  • 缓冲字节输出流:BufferedOutputStream

用法:

  • 在创建BufferedInputStream对象是需要给构造方法传入一个字节输入流对象
  • 在创建BufferedOutputStream对象是需要给构造方法传入一个字节输出流对象
  • 即这些缓冲流,是对现有输入输出流包装

二、字符流

字符流,主要是操作字符文件流

  • new FileReader(“a.txt”); 创建字符输入流,方法是read()–>读一个
  • new FileWriter(File,file); 创建字符输出流,方法是write()—>写一个

缓冲字符流

  • 缓冲字符输入流:BufferedReader
  • 缓冲字符输出流:BufferedWriter

三、IO流总结

以后操作文件的时候,能分清楚使用字节流操作还是字符流操作

  • 记住读写的方法
    • read
    • write
  • 如果发现读写比较慢,想到使用数组或者缓冲区来提高效率
  • 实际开发时,如果需要IO操作,一般使用别人封装好的工具类

四、HuTool

官方:https://www.hutool.cn/

3.1导入jar包

jar包就是打包压缩的java文件,里面都是别人写好的代码

怎么导入jar包

  • 复制jar包,到项目中粘贴
  • 只不过建议是粘贴到项目的lib文件夹
  • 右键选择Add To Library

五、匿名内部类

//创建一个接口类

public interface Typec {
    void change();
}

//演示类

  public static void main(String[] args) {
        // 内名类演示1
        new Typec(){
            @Override
            public void change() {
                System.out.println("充电...");
            }
        }.change();
        System.out.println("---------------");

        // 内名类演示2
        Typec typec = new Typec() {
            @Override
            public void change() {
                System.out.println("再充电....");
            }
        };
        typec.change();
    }
  • 16
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值