前言:
现时我们对“处理流与节点流”可能比较看重,大家都想要了解一些“处理流与节点流”的相关资讯。那么小编也在网上搜集了一些关于“处理流与节点流””的相关知识,希望咱们能喜欢,同学们一起来学习一下吧!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基础班内部教材,若要获得最好的学习效果,需要配合对应教学视频一起学习。需要完整教学视频,请私信作者。
标签: #处理流与节点流