学习-IO流知识点的梳理

2021-05-18 15:57:34 浏览数 (3)

各位小伙伴好

大家看到这个视频啊是不跟以前视频不一样了

自从昨天把那个完全露脸视频发出来之后啊这样就豁出去了咱不剪了就这种完整的!

然后第二个呢是我们随着视频的越做越多,我们整个的路线然后焦点也逐渐的突出了以前一分钟学或者说是一起学啊那些都是花里胡哨的。

现在重点就是两个字!面试!

学这些这些啊不就是为了面试找工作挣钱吗?对不对?

然后我希望后面就是我们这个白板拉出来之后,然后关于流的他有哪些知识点一眼就可以看出来了!这样先有一个整体的概念!

关于IO流的整体梳理

在流这边我们在用的时候什么 inputstreamoutputStream fileInputStream然后BufferedInputStream各种各种很混乱。

但是其实呢我们梳理完之后发现他其实是一对一对出现的!

第一对是 reader 和 writer这两个是对字符进行处理的。

然后还有inputStream和outputStream这两个是比较常见的这是对一个字节或者对流进行处理的

但是我们今天是做一个整体的梳理

后面会把这些一对的单独拿出来做一个梳理做一个讲解

所以我们这样去看的话这个结构就清晰了很多

然后作为一个初级开发者或者说你作为一个一年或者两年的开发去面试的话大概就会问这么多比如说问你 reader和wirter 有什么区别,Reader和InputStream有什么区别

但是如果你做一个三年或者说是五年的开发的话这个时候你要知道流里面有哪些设计模式

这里面主要是两个,第一个是装饰者模式第二个是适配器模式

装饰者模式

代码语言:javascript复制
BufferedInputStreambf=newBufferedInputSteam(newFileInputStream("a.txt"))

第二个适配器模式呢就在 reader 中他怎么去把字符给读出来的首先内部用的还是 inputSteam 的能力

代码语言:javascript复制
publicInputStreamReader(InputStreamin, CharsetDecoderdec) {
    super(in);
    if (dec==null)
        throw new NullPointerException("charset decoder");
    sd = StreamDecoder.forInputStreamReader(in, this, dec);
}
publicintread() throwsIOException {
    return sd.read();
}

最后是一个经常被忽略的一个点叫FileChannel

这个面试的时候很少问但一问的话就是大知识点,为什么?因为与他相关的什么有个 nio,有大文件拷贝,各种零拷贝,然后系统内存,工作内存等等 全部是跟他相关的知识点

但这个FileChannel呢,他工作中可能很少用到反正我是用的很少,基本上都是面试的时候会问,然后就是底层框架给封装好了

好以上这些就是对流的整个的梳理,后面还有细致的一些讲解大家对这个有什么疑问的话,欢迎在评论区里留言,也可以直接私信我~

0 人点赞