Java第六章第1节:输入输出流( I/O流) 细讲Java输入输出

简介

👨‍💻个人主页:@云边牧风
👨‍🎓小编介绍:欢迎来到云边牧风破烂的小星球🌝
📋专栏:Java基础知识
🔑本章内容:输入输出流
记得 评论📝 +点赞👍 +收藏😽 +关注💞哦~

接着第五章常用实用类,我们发现前五章中经常使用到System.out.println( )的语句,这是一个常用的输出语句,内容安排上一直没系统地讲到Java的输入和输出操作,这章便围绕输出输出展开学习,第六章输入输出流(I/O流)的主要内容有👇:

6.1 输入/输出流

6.1.1 I/O流概念

6.1.2 I/O流相关类

6.2 文件读写

6.2.1 File

6.2.2 读写文本文件

6.2.3 读写二进制文件

6.2.4 随机存取文件读写

第一节先主要介绍输入/输出流

一、输入/输出流(I/O流)

概念

①先弄清楚什么叫I/O流):

• I/O 即输入Input/ 输出Output的缩写,其实就是计算机调度把各个存储中(包括内存和外部存储)的数据写入写出的过程;

• java中用“流(stream)”来抽象表示这么一个写入写出的功能,封装成一个“类”,都放在java.io这个包里面

② java.io包中的输入/输出流类能够与程序“外部”交互,获取/输出“信息”

外部 ” 包括:键盘 / 显示器等 外设 文件 磁盘 网络 、另外一个 程序
信息 ” 可以是 任何类型 的,例如:一个对象、字符串、图像、声音等

③ 开发角度上,我们所指的 I/O:指程序与外部的信息交互

输入是指数据 流入 程序
输出是指数据从程序 流出

④  流:一个从源流向目的地的数据序列

打开: I/O 流类的对象一旦 被创建就会自动打开
关闭:
通过调用 close 方法 ,可以显式关闭任何一个流
如果流对象不再被引用, Java 垃圾回收机制 也会自动关闭它

 不论数据从哪来,到哪去;也不论数据本身是何类型,读写数据的方法大体上都是一样的:

打开一个流👉读/ 写信息👉关闭流

二、I/O流相关类

2.1I/O流分类

流的方向 划分
输入流 InputStream Reader 及其子类
输出流 OutputStream Writer 及其子类

流的内容 划分
面向字符 的流: Reader Writer 及其子类
面向字节 的流: InputStream OutputStream 及其子类

流的分工 划分
节点流 直接与目标相连 ,进行读写。如 FileReader 类、 FileWriter
处理流 不直接与目标相连 基于已有流构造 ,能够在读取流时进行 处理 。如 BufferedReader 类、 BufferedWriter

2.2、面向字符与面向字节的流

面向字符 :专门用于 字符数据
面向字节 :用于通用的 二进制数据

 联系与区别

字节流是最基础的, 字符流也是字节流 ,只是为了方便处理而定义的一个特例;
如果确定 流里面只有 Unicode 字符 (不包含不可打印的特殊字符),可以考虑 用字符流

类层次结构
InputStream OutputStream Reader Writer 抽象类 ,其他 I/O 类都是它们的子类

三、面向字符的流

针对字符数据的特点进行过优化 ,提供一些面向字符的有用特性
源或目标通常是文本文件
抽象类 Reader Writer 是所有字符流的 父类

常用的有👇:

BufferedReader :处理流,建立 缓冲区 读取数据
LineNumberReader :增加缓冲 计数器
CharArrayReader :从 字符数组 中读取数据
InputStreamReader :处理流, 转换字节流到字符流
FileReader :从本地 文件系统 中读取字符序列
FilterReader :处理流,提供一个 过滤器
PushbackReader :允许把文本数据 推回到读取器 的流中
PipedReader :从 线程管道 中读取字符序列
StringReader :从 字符串 中读取字符序列

四、面向字节的流

如果数据源或目标中 含有非字符数据 必须用字节流 来输入 / 输出,例如图片、声音等二进制数据
绝大多数数据是被存储为二进制文件的
抽象类 InputStream OutputStream 是所有字节流的 父类

五、标准的输入输出流

标准输入输出对象:inouterr

System 常量 ,用 public static final 修饰:
System. in InputStream 类型 ,代表 标准输入流 ,这个流是已经打开了的,默认对应 键盘 输入
System. out PrintStream 类型 ,代表 标准输出流 ,默认对应 屏幕 输出
System. err PrintStream 类型 ,代表 标准错误信息输出流 ,默认状态对应于 屏幕 输出

例如:从键盘读入信息并在显示器上显示

import java.io.*;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader r = new BufferedReader(new  InputStreamReader(System.in));
        String s = r.readLine();
        System.out.println(s);

    }
}

balabalabala//键盘上敲入的
balabalabala//屏幕上输出的

 关于以上代码的介绍👇:

 System.in:程序启动时由Java系统自动创建的流对象,它是原始的字节流,不能直接从中读取字符,需要对其进行进一步的处理

InputStreamReader(System.in):以System.in为参数创建一个InputStreamReader流对象,相当于字节流和字符流之间的一座桥梁,读取字节并将其转换为字符

BufferedReader  r:对InputStreamReader处理后的信息进行缓冲,以提高效率

六、处理流

不直接 与数据源或目标 相连 ,而是 基于另一个流 来构造
从流中读写数据的同时 对数据进行处理

 如:

InputStreamReader 读取字节并转换为字符
BufferedReader 对另一个流产生的数据进行缓冲
处理流类的构造方法中, 通常需要传入一个节点流作为参数

上面代码例子的逻辑:

定义一个BufferedReader,从标准输入中读取字符:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in) );

IO异常

例如第三行代码👇: 

public static void main(String[] args) throws IOException {
多数 IO 方法在遇到错误时会抛出异常,因此调用这些方法时必须:
在方法头声明 抛出 IOException 异常
👇
👇
👇
👉在“main(String[] args)”后面需要加上 “ throws IOException

结束语:

以上是Jav第六章第1节的全部内容 希望大家喜欢

下一节讲第六章第2节:文件读写——File类、 读写文本文件、 读写二进制文件、随机存取文件读写

喜欢的可以点赞+关注哈 ❤

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云边牧风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值