什么是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(字节输入流)
类的声明为:publicabstractclassInputStreamextendsObjectimplementsCloseable,表示字节输入流的所有类的超类。
常用方法:
publicvoidclose()throwsIOException:关闭此输入流并释放与该流关联的所有系统资源。InputStream的close方法不执行任何操作。
publicabstractintread()throwsIOException:从输入流中读取一个字节数据并返回该字节数据,如果到达流的末尾,则返回-1。
publicintread(byte[]buff)throwsIOException:从输入流中读取多个字节数据,并存储在缓冲区数组buff中。返回已读取的字节数量,如果已到达流的末尾,则返回-1。
1.1.4.2.OutputStream(字节输出流)
类的声明为:publicabstractclassOutputStreamextendsObjectimplementsCloseable,Flushable,表示字节输出流的所有类的超类。
常用方法:
publicvoidclose()throwsIOException:关闭此输出流并释放与此流有关的所有系统资源。
publicabstractvoidwrite(intb)throwsIOException:将指定的一个字节数据b写入到输出流中。
publicvoidwrite(byte[]buff)throwsIOException:把数组buff中所有字节数据写入到输出流中。
publicvoidwrite(byte[]b,intoff,intlen)throwsIOException:把数组buff中从索引off开始的len个字节写入此输出流中。
1.1.4.3.Reader(字符输入流)
类的声明为:publicabstractclassReaderextendsObjectimplementsReadable,Closeable,表示字符输入流的所有类的超类。
常用方法:
publicabstractvoidclose()throwsIOException:关闭此输入流并释放与该流关联的所有系统资源。
publicintread()throwsIOException:从输入流中读取一个字符数据并返回该字符数据,如果到达流的末尾,则返回-1。
publicintread(char[]cbuf)throwsIOException:从输入流中读取多个字符,并存储在缓冲区数组cbuf中。返回已读取的字符数,如果已到达流的末尾,则返回-1。
1.1.4.4.Writer(字符输出流)
类的声明为:publicabstractclassWriterextendsObjectimplementsAppendable,Closeable,Flushable,表示字符输出流的所有类的超类。
常用方法:
publicabstractvoidflush()throwsIOException:刷新此输出流并强制写出所有缓冲的输出字符。
publicabstractvoidclose()throwsIOException:关闭此输入流并释放与该流关联的所有系统资源。
publicvoidwrite(intc)throwsIOException:将指定的一个字符数据c写入到输出流中。
publicvoidwrite(char[]cbuf)throwsIOException:把数组cbuf中cbuf.length个字符数据写入到输出流中。
publicabstractvoidwrite(char[]cbuf,intoff,intlen)throwsIOException:把数组cbuf中从索引off开始的len个字符写入此输出流中。
publicvoidwrite(Stringstr)throwsIOException:将str字符串数据写入到输出流中。
以上就是深圳达内教育Java培训机构小编介绍的“Javase经典基础入门教程:IO流概述”的内容,希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为你服务。