龙空技术网

Java入门教程-IO流概述

叩丁狼stef 218

前言:

现时我们对“处理流与节点流”可能比较看重,大家都想要了解一些“处理流与节点流”的相关资讯。那么小编也在网上搜集了一些关于“处理流与节点流””的相关知识,希望咱们能喜欢,同学们一起来学习一下吧!

1.1. IO流概述(了解)1.1.1. IO概述(了解)

什么是IO,Input和Output,即输入和输出。

电脑相关的IO设备:和电脑通信的设备,此时要站在电脑的角度,把信息传递给电脑叫输入设备,把电脑信息传递出来的叫输出设备。

输入设备:麦克风、扫描器、键盘、鼠标等 输出设备:显示器、打印机、投影仪、耳机、音响等

为什么程序需要IO呢?

案例1:打游戏操作,需要存储游戏的信息。

此时需要把游戏中的数据存储起来,数据只能存储在文件中。

案例2:打游戏操作,需求读取之前游戏的记录信息,数据存储在一个文件中的。

此时游戏程序需要去读取文件中的数据,并显示在游戏中。

IO操作是一个相对的过程,一般的,我们在程序角度来思考(程序的内存)。

程序需要读取数据:文件——>程序,输入操作 程序需要保存数据:程序——>文件,输出操作1.1.2. IO操作示意图(了解)

讲解IO知识点的时候,习惯和生活中的水流联系起来,一起来看看复古的水井和水缸。

此时站在水缸的角度,分析IO的操作方向:

输入操作:水井——>水缸

输出操作:水缸——>饭锅

注意:谁拥有数据,谁就是源,把数据流到哪里,哪里就是目标。那么,请问水缸是源还是目标。

1.1.3. 流的分类(掌握)

根据流的不同特性,流的划分是不一样的,一般按照如下情况来考虑:

按流动方向:分为输入流和输出流 按数据传输单位:分为字节流和字符流,即每次传递一个字节(byte)或一个字符(char) 按功能上划分:分为节点流和处理流,节点流功能单一,处理流功能更强

流的流向是相对的,我们一般站在程序的角度:

程序需要数据 → 把数据读进来 → 输入操作(read):读进来 程序保存数据 → 把数据写出去 → 输出操作(write):写出去

六字箴言:读进来,写出去(仔细揣摩这六个字有什么高深的含义)

1.1.4. 四大基流

操作IO流的模板:

1):创建源或者目标对象(挖井).

输入操作: 把文件中的数据流向到程序中,此时文件是源,程序是目标.

输出操作: 把程序中的数据流向到文件中,此时文件是目标,程序是源.

2):创建IO流对象(水管).

输入操作: 创建输入流对象.

输出操作: 创建输出流对象.

3):具体的IO操作.

输入操作: 输入流对象的read方法.

输出操作: 输出流对象的write方法.

4):关闭资源(勿忘). 一旦资源关闭之后,就不能使用流对象了,否则报错.

输入操作: 输入流对象.close();

输出操作: 输出流对象.close();

注意:

四大抽象流是不能创建对象的,一般的我们根据不同的需求创建他们不同的子类对象,比如操作文件时就使用文件流。 不管是什么流,操作完毕都必须调用close方法,释放资源。1.1.4.1. InputStream(字节输入流)

类的声明为:public abstract class InputStream extends Object implements Closeable,表示字节输入流的所有类的超类。

常用方法:

public void close() throws IOException:关闭此输入流并释放与该流关联的所有系统资源。 InputStream 的 close 方法不执行任何操作。 public abstract int read() throws IOException:从输入流中读取一个字节数据并返回该字节数据,如果到达流的末尾,则返回 -1。 public int read(byte[] buff) throws IOException:从输入流中读取多个字节数据,并存储在缓冲区数组 buff 中。返回已读取的字节数量,如果已到达流的末尾,则返回 -1。1.1.4.2. OutputStream(字节输出流)

类的声明为:public abstract class OutputStream extends Object implements Closeable, Flushable,表示字节输出流的所有类的超类。

常用方法:

public void close() throws IOException:关闭此输出流并释放与此流有关的所有系统资源。 public abstract void write(int b) throws IOException:将指定的一个字节数据b写入到输出流中。 public void write(byte[] buff) throws IOException:把数组buff中所有字节数据写入到输出流中。 public void write(byte[] b, int off,int len) throws IOException:把数组buff中从索引off 开始的len 个字节写入此输出流中。1.1.4.3. Reader(字符输入流)

类的声明为:public abstract class Reader extends Object implements Readable, Closeable,表示字符输入流的所有类的超类。

常用方法:

public abstract void close() throws IOException:关闭此输入流并释放与该流关联的所有系统资源。 public int read() throws IOException:从输入流中读取一个字符数据并返回该字符数据,如果到达流的末尾,则返回 -1。 public int read(char[] cbuf) throws IOException:从输入流中读取多个字符,并存储在缓冲区数组 cbuf 中。返回已读取的字符数,如果已到达流的末尾,则返回 -1。1.1.4.4. Writer(字符输出流)

类的声明为:public abstract class Writer extends Object implements Appendable, Closeable, Flushable,表示字符输出流的所有类的超类。

常用方法:

public abstract void flush() throws IOException:刷新此输出流并强制写出所有缓冲的输出字符。 public abstract void close() throws IOException:关闭此输入流并释放与该流关联的所有系统资源。 public void write(int c) throws IOException:将指定的一个字符数据c写入到输出流中。 public void write(char[] cbuf) throws IOException:把数组cbuf中cbuf.length 个字符数据写入到输出流中。 public abstract void write(char[] cbuf, int off,int len) throws IOException:把数组cbuf中从索引off 开始的len 个字符写入此输出流中。 public void write(String str) throws IOException:将str字符串数据写入到输出流中。

本系列教程为叩丁狼Java基础班内部教材,若要获得最好的学习效果,需要配合对应教学视频一起学习。需要完整教学视频,请私信作者。

标签: #处理流与节点流