Java IO
lippon
Think Different.
展开
-
Java IO 知识点总结
IO的分类按照流的流向分,可以分为输⼊流和输出流;按照操作单元划分,可以划分为字节流和字符流;按照流的⻆⾊划分为节点流和处理流。Java IO类很多,主要是由以下四个抽象基类派生出来的:InputStream/Reader: 所有的输⼊流的基类,前者是字节输⼊流,后者是字符输⼊流。OutputStream/Writer: 所有输出流的基类,前者是字节输出流,后者是字符输出流。为什么需要分字节流和字符流?在数据传输和存储的时候,基本都是以字节为最小存储单元,所以,需要使用到字节流;给人原创 2020-12-15 21:30:37 · 98 阅读 · 0 评论 -
Java IO源码分析(五)——CharArrayReader 和 CharArrayWriter
简介CharArrayReader 是字符数组的输入流,它和我们之前讲的ByteArrayInputStream十分类似,顾名思义,区别在于一个用于字符数组,一个用于字节数组,在Java中字符是16位,而字节是8位的。CharArrayReader 继承于Reader,操作的数据是以字符为单位。源码分析ReaderCharArrayReader 的抽象父类。public abstract class Reader implements Readable, Closeable { // 对象锁,原创 2020-12-14 09:47:25 · 123 阅读 · 0 评论 -
Java IO源码分析(四)——PrintStream
简介PrintStream继承于FilterOutputStream,而FilterOutputStream用于封装其他的输出流。PrintStream用于给其他的输出流封装了一层打印的功能,它内部重载了很多数据类型,这样可以方便打印不同类型的数据。源码分析public class PrintStream extends FilterOutputStream implements Appendable, Closeable{ // 自动fulsh标志位,如果为真,那么每次执行print原创 2020-12-12 10:30:02 · 167 阅读 · 0 评论 -
Java IO源码分析(三)——PipedOutputStream 和 PipedInputStream
简介PipedOutputStream和PipedInputStream主要用于线程之间的通信 。二者必须配合使用,也就是一段写入,另一端接收。本质上也是一个中间缓存区,讲数据缓存在PipedInputStream的数组当中,等待PipedOutputStream的读取。PipedInputStream的缓冲区中循环缓冲的思想很有意思。PS:虽然这个也叫管道,但是这和进程之间的管道通信没有任何关系。这里的管道流是基于Java用户层的代码实现的,而经常通信是基于内核态的程序的通信。源码分析Piped原创 2020-12-11 10:43:33 · 391 阅读 · 1 评论 -
Java IO源码分析(二)——ByteArrayInputStream 和 ByteArrayOutputStream
简介ByteArrayInputStream 是字节数组输入流,它继承于InputStream。它的内部数据存储结构就是字节数组。ByteArrayOutputStream是字节数组输出流,它继承于OutputStream。它的内部数据存储结构也是字节数组。源码分析InputStream在分析ByteArrayInputStream之前,应该先看InputStream,父类InputStream是ByteArrayInputStream的父类,主要实现了读取和跳跃的方法。public abs原创 2020-12-10 09:46:14 · 251 阅读 · 1 评论