io技术

输入流和输出流是相对于内存来说的

将外设中的数据写到内存中是输入
将内存中的数据写到外设中是输出


字符流的由来:
其实就是:字节流读取文字字节数组后,不直接操作而是先查指定的编码表,获取对应的文字
在对这个文字进行操作,简单来说就是字节流+编码表

------------------
字节流的两个顶级的父类
inputStream  outputStream

字符流的两个顶级的父类
1.Reader 2.Writer
这些子类的都以父类的名字为后缀
前缀就是这些子类的功能

//需求:将一些文字存储到硬盘一个文件中。
    操作文件的就可以想到FileWriter
//需求:将一些文字从硬盘读取到内存中 
    就想到了FileReader
    
    BufferWriter:新方法newline();
    BufferedReader:新方法readLine();
    
装饰者模式:
当对一组对象的功能需要增强的时候就可以用 ,与继承有什么区别呢,装饰者模式可以灵活的使用需要装饰的东西,因为继承体系太庞大了如果单纯为了
某个功能进行继承,那么体系就会越来越臃肿。
-----------------------------------------------

字节流:

InputStream  
    

OutputStream

字节流:
FileInputStream 
FileOutputStream
BufferedInputStream
BufferedOutputStream
字符流:
Writer Reader
FileReader
FileWriter
BufferedReader
BufferedWriter
--------------------------------------------------
转换流
inputStreamReader():
outputStreamWriter();

字节到字符的流的桥梁  解码
字符到字节流的桥梁 编码

流的操作规律:
因为流的对象太多了,开发的过程中不知道用哪个对象合适

想知道用哪个对象,只需要读懂4个明确

1.明确源和目的:
        源 :inputStream Reader
        目的:OutputStream Writer
2.明确数据是否是纯文本:
        源:是纯文本  Reader
            不是:InputStream
        目的:是纯文本:Writer
            不是:OutputStream
3.明确具体的设备:
        源设备:
            硬盘:file
            键盘:System.in
            内存:Array
            网络:socket
        目的设备:
            硬盘:File
            控制台:System.out
            内存:Array
            网络:Socket
            
4.是否需要其他额外功能:
        缓冲:
            Buffered
        转换流:
            InputStreamReader
            OutputStreamWriter
            
            
            
            
SequenceInputStream:
    特点:
    1,将多个字节读取流和并成一个读取流,将多个源合并成一个源,操作起来方便。
    2,需要的枚举接口可以通过Collections.enumeration(collection);
    
properties
    是HashTable的一个子类,是存一些配置文件之类的是键值对
    properties.load(in)吧文件的内容读取出来放入源中
    properties.store(write)是源中的数据写入pro中

猜你喜欢

转载自my.oschina.net/u/3234136/blog/1786314