Java IO流 详解(字节流、字符流、输入流、输出流、刷新)

本文详细介绍了Java中的IO流,包括字节流和字符流的分类、输入流与输出流的区别,以及各种流的构造方法、成员方法和使用示例。重点讲解了OutputStream和InputStream的write方法,以及Reader和Writer的read方法。还讨论了字节流操作文本文件可能出现的问题,并给出了字符流的解决方案。
摘要由CSDN通过智能技术生成

一、IO流概述

          I:Input输入  从其他存储设备【读】数据到内存中  输入过程
        O:OutPut输出  从内存中【写】数据到其他存储设备  输出过程

二、IO流分类

        1.根据数据的类型分为:

                【字节流】和【字符流】

                【字节流】:以字节为基本单位,读写数据的流
                            字节输入流:以字节为基本单位,读数据
                            字节输出流:以字节为基本单位,写出数据
                【字符流】:以字符为基本单位,读写数据的流
                            字符输入流:以字符为基本单位,读数据
                            字符输出流:以字符为基本单位,写出数据

        2.根据数据的流向分为:

                【输入流】和【输出流】

                【输入流】:把数据从 其他存储设备 上【读取】到 内存 中的流
                           字节输入流:以字节为基本单位,读数据
                           字符输入流:以字符为基本单位,读数据
                【输出流】:把数据从 内存 中【写出】到 其他 存储 设备中的流
                           字节输出流:以字节为基本单位,写出数据
                           字符输出流:以字符为基本单位,写出数据

        3.IO流的顶层父类

                - 字节输入流:顶层父类:InputStream --> 抽象类   常见子类:FileInputStream
                - 字节输出流:顶层父类:OutputStream --> 抽象类   常见子类:FileOutputStream
                - 字符输入流:顶层父类:Reader --> 抽象类   常见子类:FileReader
                - 字符输出流:顶层父类:Writer --> 抽象类   常见子类:FileWriter

 

三、字节输出流OutPutStream

        OutputStream 输出流顶层父类
            java.io.OutputStream抽象类是所有【字节输出流】的父类,用来【写】出字节输出流


            成员方法:

                - public void close():关闭次输出流并释放与此流相关联的任何系统资源
                - close方法,当完成流的操作时,必须调用此方法,释放系统资源,否则数据写入不完整或消失
                - public abstract void write(int b):将指定的字节写入输出流【一个字节一个字节写入到硬盘】
                - public void write(byte b[]):将 b.length字节从指定的字节数组写入到此输出流【以字节数组的形式写入到硬盘】
                - public void write(byte b[],int off, int len):将指定范围的字节数组的字节数据写到此输出流中【将字节数组中某一段字节数据写到硬盘】

           方法逐个演示:

                1.写出单个字节数据

        // 1.创建字节输出流对象  路径文件必须真实存在
        FileOutputStream fos1 = new FileOutputStream("day12_File类与递归&IO流&字符流&字节流\\resources\\a.txt");
        // 2.写出 单个字节的数据
        fos1.write(72);
        // 写入的一个字节数据,我们是往文本文档写入字节数据,但是因为是文本类型,需要将字节数据转换成文本数据,文本就是字符
        fos1.write(105);
        fos1.write(33);
        // 3.关闭流,释放资源
        fos1.close();

        (运行结束,会在对应的文件中生成对应的字节,代码中写入的数字为ASCII码,每个数字对应一个字母)

                 2.写出字节数组数据

        //1.创建字节输出流对象       真实存在的路径
        FileOutputStream fos1 = new FileOutputStream("day12_File类与递归&IO流&字符流&字节流\\resources\\a.txt");
        // 2.创建字节数组
        b
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值