每周总结15 - IO
一、IO的概念
IO,即是input and output
输入和输出的缩写。
put,放,Input就往里面放,输入,Output就往外面放,输出。
输入,往内存memory中读入硬盘disk上的数据。这叫做 读read。
输出,从memory中,往disk上写数据,这叫做 写wirte.
二、数据流
java程序中,对于数据的输入输出操作以流(“steram")的方式进行。
所谓“流”,有点抽象的概念,可以理解为数据的水流,一个传输数据的通道,可以传输相应类型的数据,从而完成数据的传输,这个通道被实现为一个具体的对象。
java.io包下提供了各种“流”的类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。
流的分类classify:
1.java中的I/O流按照数据流的流向不同
分为输入和输出流。
2.按操作数据单位不同
分为字节流和字符流。
字节流一次读取一个字节byte = 8bit;
字节流是最基本的,全能流。
而字符流是自动识别语言,一次读一个字符。
是中文(占2byte)就读2byte,是英文字母就读一个byte.
(不知道是否支持所有各国语言?)
字符流只能读纯文本文件,.txt。
(字节流在操作时不会用到缓冲区,直接操作了文件,而字符流使用了缓冲区,通过缓冲区再操作文件。)(?待己考证吧)
3.按流的功能不同
分为底层的节点流和上层的处理流两类。
节点流直接从数据源或者目的地读写数据。(直接的)
而处理流不直接连接数据源或者目的地,
而是连接在已经存在的流(节点流或者处理流上)
通过对数据的处理为程序提供更为强大的读写功能。
其中,起始抽象父类源头。(祖宗)
所有的输入流抽象父类 InputStream,Reader.
所有的输出流抽象父类OutputStream,Writer.
字节流 InputStream,OutputStream.
字符流Reader,Writer.
凡是Stream结尾的,就是字节流。初始的全能的字节流Stream。
凡是Reader,Writer结尾的,就是字符流。读写纯文本的字符流,Reader,Writer。
分类的子类流名称 == 用途种类特征or对象 + 继承的抽象父类名。
前者表示 用途特征or对象 , 后者 可以看出是 字节or字符,输入or输出流。
例如FileInputStream.
可以知道是访问文件File的(文件流),继承InputStream(字节,输入流)
FileWriter,可知是 File(文件流),继承Writer(字符,写出,输出流)
同理Reader(字符,读入,输入流)
OutputStream(字节,输出流)
大致上,前者表示 用途特征or对象 , 后者 可以看出是 字节or字符,输入or输出流。
分类 | 字节输入流 | 字节输出流 | 字符输入流 | 字符输出流 |
---|---|---|---|---|
抽象父类 | InputStream | OutputStream | Reader | Writer |
File文件流 | FileInputStream | FileOutputStream | FileReader | FileWriter |
Array数组流 | ByteArrayInputStream | ByteArrayOutputStream | CharArrayReader | CharArrayWriter |
piped管道流 | PipedInoutStream | PipedOutputSream | PipedReader | PipedWriter |
String字符串流 | StringReader | StringWriter | ||
Buffered缓冲流 | BufferedInputStream | BufferedOutputStream | BufferReader | BufferWriter |
转换流 | InputStreamReader | OutputStreamWriter | ||
Object对象流 | ObjectInputStream | ObjectOutputStream | ||
装饰流(过滤流) | FilterInputStream | FilterOutputStream | FilterReader | FilterWriter |
print打印流 | PrintStream | PrintWriter | ||
Data数据过滤流 | DataInputStream | DataOutputStream |
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ontXiDwG-1654585496178)(C:\Users\XGX\Pictures\Saved Pictures\QQ图片20220601223255.jpg)]
例外,如ByteArrayInputStream,CharArrayReader,还加了前缀,
区别就是前者用字节Byte数组来读取数据,后者利用字符Char数组(2byte)来读取数据(应该还有其他的区别,不过这比较明显了吧。)
array 数组,队列,阵列。
pipe 管,管道,管子。
buffer 缓冲器,缓冲物;储存器,缓冲区。
filter 滤器,过滤器,过滤光、声、波等器。v 过滤。
filter流不知道用来干什么。
string 一串;细绳;袋子;字符串;v 悬挂;系;串; 等意思。
String字符串流只有字符流,。。。一个字符串就不止字节了么是这样吗?
转换流是字符流,用于将字节流转换为字符流。包装一下。
print打印,打印流都是输出流,
先搞线程了。