Java总结IO之总集篇

Java总结IO四篇:

名称

第零篇

Java总结IO之总集篇

第一篇

Java总结IO第一篇之字符流与字符编码

第二篇

Java总结IO第二篇之字节流与字符流转化

第三篇

Java总结IO第三篇之File类和Properties类

第四篇

Java总结IO第四篇之其他IO流对象

一、字符流概览

读入流I(用于读取数据源--内存、磁盘、键盘)
 Reader
     |---★InputStreamReader     <- isr- 字节输入转换字符流           
         |---★FileReader      <- pr-文件读取流
     |---★BufferedReader      <- pfw-缓冲读取   
     |---PipedReader
     |---★CharArrayReader        <- car-字符数组读取流 
     |---★StringReader           <- sr-字符串读取流  
     |---FilterReader          
     |---URLReader
输出流O(将数据源引向目的地--内存、磁盘、控制台)
Writer                                     
    |---★OutputStreamWriter   <-osw-字节输入转换字符流                
        |---★FileWriter       <- fw-文件书写流             
    |---★BufferedWriter       <- bfw-缓冲书写                     
    |---PipedWriter   
    |---★CharArrayWriter        <- caw-字符数组书写流   
    |---★StringWriter           <- sw-字符串书写流                
    |---FilterWriter                       
    |---★PrintWriter          <- pw-字符打印输出流                      

二、字节流概览

读入流I(用于读取数据源--内存、磁盘、键盘)
InputStream
    |---★FileInputStream              <- fis-文件输入流
    |---★ByteArrayInputStream         <- pais-字节数组输入流
    |---★ObjectInputStream            <- pis-对象输入流
    |---★StringBufferInputStream        <- sbis-字符串缓冲输入流
    |---PipedInputStream               <- pis-管道输入流
    |---FilterInputStream              <- ftis-过滤输入流
        |---★DataInputStream           <- 基本类型输入流
        |---★BufferedInputStream       <- 缓冲输入流
        |---DigestInputStream
        |---PushbackInputStream
输出流O(将数据源引向目的地--内存、磁盘、控制台)
OutputStream
    |---★FileOutputStream           <- fos-文件输出流
    |---★ByteArrayOutputStream       <- baos-字节数组输出流
    |---★ObjectOutputStream          <- oos-对象输出流
    |---PipedOutputStream           <- pos-管道输出流
    |---FilterOutputStream          <- ftos-过滤输出流
        |---★DataOutputStream       <- dos-基本类型输出流
        |---★BufferedOutputStream   <- bfos-缓冲输出流
        |---DigestOutputStream      
        |---★PrintStream            <- ps-字节打印输出流   

三、故事时间:

看起来这么多的类,是不是有点晕,先且听一个故事

第一章 背景(四大流派)

传说中江湖四大流派字符输入流,字符输出流,字节输入流,字节输出流,原本出自一家[IO流]。 IO流派根据性别修炼功法,分为输入流输出流两大支派,男习输入流,女习输出流 (可以理解为:男生赚钱输入,女生花钱输出...千万别多想...)

由于【字符】宗师偏爱文本,和【字节】宗师万物平等理念不合,所谓道不同,不相为谋。 【字符】宗师敢爱敢恨,自立门派,IO流自此分成两家:字符流字节流

字符输入流开山祖师名叫Reader,性别男 ; 字符输出流开山祖师名叫Writer,性别女。 相传是夫妻二人,两人合作为文本操作界带来屡屡清风,但看到【图片】,【视频】等人就心有余而力不足了。

字节输入流开山祖师名叫InputStream,性别男 ; 字节写流开山祖师名叫OutputStream,性别女。 相传是也夫妻二人,两人合作称为二进制操作界的栋梁,但识别字符的能力偏弱。

第二章 奇子(转换字节流)

字符流字节流向来各行其事,很少有交集。 但ReaderWriter有两个奇子,名叫InputStreamReader(男)和OutputStreamWriter(女), 可以和字节流打交道,并让字节流派的人归于字符流派。世称两人:转换字节流

第三章 当代(四大流派掌门人)

字符输入流掌门人:FileReader,性别男,InputStreamReader之子 字符输出流掌门人:FileWriter,性别女,OutputStreamWriter之女 字节输入流掌门人:FileInputStream,性别男,InputStream之子 字节输出流掌门人:FileOutputStream,性别女,OutputStream之女

第四章 装备(装饰流)

四大流派都拥有装备,根据不同装备可以更容易做事

装备1:黄金卡车--Buffered(支持四大门派) 作用:将数据装入卡车,不用一个一个的搬,而是一车一车的搬。

字符输入流配车:BufferedWriter 字符输出流配车:BufferedReader 字节输入流配车:BufferedInputStream 字节输出流配车:BufferedOutputStream

装备2:基本数据类型黄金铲--Data(仅支持字节两派) 作用:读写基本数据类型实现起来比较费劲,要考虑到不同类型占的字节数区分对待 有了这个装备,一铲一个,给你自动分类型,存取基本数据类型的不二法器 字节输入流配铲:DataInputStream 字节输出流配铲:DataOutputStream

装备3:其他数据类型黄金铲 1.字节数组铲--ByteArray(仅支持字节两派) 字节输入流配铲:ByteArrayInputStream 字节输出流配铲:ByteArrayOutputStream 2.字符数组黄金铲--CharArray(仅支持字符两派) 字符输入流配铲:CharArrayReader 字符输出流配铲:CharArrayWriter 3.字符串组黄金铲--String(支持三大门派) 字符输入流配铲:StringReader 字符输出流配铲:StringWriter 字节输入流配铲:StringBufferInputStream 4.对象黄金铲--Object(仅支持字节两派) 字节输入流配铲:ObjectInputStream 字节输出流配铲:ObjectOutputStream

好了,基本上也就这样,当你要操作文件时,想一想: 是那个流派的?,男的女的(I还是O)?想不想换流派?要不要装备帮忙?相信会对你有帮助。

四、IO五篇地址

名称

第零篇

Java总结IO之总集篇

第一篇

Java总结IO第一篇之字符流与字符编码

第二篇

Java总结IO第二篇之字节流与字符流转化

第三篇

Java总结IO第三篇之File类和Properties类

第四篇

Java总结IO第四篇之其他IO流对象


本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java编程

20个非常有用的Java程序片段

下面是20个非常有用的Java程序片段,希望能对你有用。

7652
来自专栏函数式编程语言及工具

SDP(9):MongoDB-Scala - data access and modeling

    MongoDB是一种文件型数据库,对数据格式没有硬性要求,所以可以实现灵活多变的数据存储和读取。MongoDB又是一种分布式数据库,与传统关系数据库不同...

3904
来自专栏高性能服务器开发

(三)dict哈希结构3

/* This function performs just a step of rehashing, and only if there are * no...

2778
来自专栏闵开慧

javascript入门操作

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.or...

38213
来自专栏SeanCheney的专栏

《Pandas Cookbook》第09章 合并Pandas对象

1991
来自专栏前端说吧

正则表达式验证汇总

一、收集1  (转自https://blog.csdn.net/jumtre/article/details/13775351)

1061
来自专栏小樱的经验随笔

POJ 2492 A Bug's Life

A Bug's Life Time Limit: 10000MS Memory Limit: 65536K Total Submissions:...

28910
来自专栏HansBug's Lab

2764: [JLOI2011]基因补全

2764: [JLOI2011]基因补全 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 570  Solv...

3028
来自专栏码匠的流水账

聊聊storm的WindowedBolt

storm-2.0.0/storm-client/src/jvm/org/apache/storm/topology/IWindowedBolt.java

792
来自专栏码匠的流水账

聊聊storm TridentTopology的构建

storm-core-1.2.2-sources.jar!/org/apache/storm/trident/TridentTopology.java

1062

扫码关注云+社区

领取腾讯云代金券