IO流体系

IO流体系(Input和Output)
    Input: 将磁盘中的数据读到内存中
    Output:将内存中的数据写入磁盘中
一.字节流
    1.字节输出流OutputStream --> FileOutputStream
        写字节数据:
            write(int b)方法,每次写一个字节的数据
            write(byte[] b)方法,每次写一个字节数组的数据
            write(byte[] b, int off, int len)方法,每次写指定长度字节数组的数据
        注意:
            1)数据需要追加续写,在构造方法中加true
            2)写出需要换行,加\r\n
            
    2.字节输入流InputStream -->FileInputStream
        读字节数据:
            read()方法,每次读一个字节的数据
            read(byte[] b)方法,每次读一个字节数组的数据
        注意:
            读取到文件末尾,返回-1
            
二.字符流
    1.字符输出流Writer -->FileWriter
        写字符数据:
            write(int b)方法,每次写一个字符的数据
            write(char[] chs)方法,每次写一个字符数组的数据
            write(char[] chs, int off, int len)方法,每次写指定长度字符数组的数据
            write(String str)方法:写一个字符串
            write(String str, int off, int len)方法:每次写指定长度字符串的数据
        注意:
            1)未调用close方法,数据只是保存到了缓冲区,并未写出到文件中
            2)如果不想关流,可以使用flush方法刷新缓冲区
            
    2.字符输入流Reader -->FileReader
        读字符数据:
            read()方法,每次读一个字符的数据
            read(char[] chs)方法,每次读一个字符数组的数据
            read(char[] cbuf, int off, int len) 将字符读入数组的一部分。 
        
三.属性集    
     Properties:每个键及其对应值都是一个字符串
        存储方法
            setProperty(String key, String value) : 保存一对属性
            getProperty(String key) :获取指定的键对应的属性值
            Set<String> stringPropertyNames() :获取所有键的名称
        与流相关的方法:                        
            load(InputStream is):  用字节输入流读取文件中的键值对
            store(OutputStream os):用字节输出流将键值对写入文件中
            
            Properties prop = new Properties();
            prop.store(new FileOutputStream("prop.txt"),"test");
            
            prop.load(new FileReader("prop.txt"));
            Set<String> set = prop.stringPropertyNames();

            
四.缓冲流
    1.字节缓冲输出流:BufferedOutputStream
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("bos.txt"));
        bos.write();
    2.字节缓冲输入流:BufferedInputStream 
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("bis.txt"));
        int len = bis.read();
    
    3.字符缓冲流输出流:BufferedWriter
        BufferedWriter bw = new BufferedWriter(new FileWriter("bw.txt"));
        bw.write();
        bw.newLine();
    4.字符缓冲流输入流:BufferedReader        
        BufferedReader br = new BufferedReader(new FileReader("br.txt"));
        String line = br.readLine();
    
五.转换流
    1.OutputStreamWriter:写字节,使用指定的字符集将字符编码为字节
        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("out.txt") , "GBK");
        osw.write("你好");
        
    2.InputStreamReader: 读字节,使用指定的字符集将字节解码为字符
        InputStreamReader isr = new InputStreamReader(new FileInputStream("in.txt") , "GBK");
        int len = isr.read();
        
        
六.序列化流
    1.ObjectOutputStream类:序列化,将对象转换成字节写入文件存储
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("employee.txt");
        out.writeObject(obj);
        
    2.ObjectInputStream类:反序列化,读取文件中的字节重构成对象
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("obj.txt"));
        Object obj = ois.readObject();
        
    3.注意:
        1)一个对象要想序列化,这个类必须实现Serializable接口
        2)如果类中某个属性不需要序列化,使用transient关键字修饰
        

迭代器:iterator
比较器:comparator
过滤器:filter
监听器:listener
适配器:adapter

后台:数据(核心)和业务逻辑处理(针对数据做增删改查操作)
变量:只能存储一个数据
数组:可以存储多个数据,但是长度固定
集合:可以存储多个数据,长度可以改变,但是只能临时存储(内存中)
IO流:可以存储多个数据,长度可以改变,并且可以永久存储(磁盘中),但是数据不方便操作
数据库:不仅可以存储多个数据,而且长度是可变的,并且数据是持久存储的,还可以对数据进行管理

猜你喜欢

转载自blog.csdn.net/hivi12345/article/details/83542932
今日推荐