A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 薛灵云 中级黑马   /  2015-8-27 10:11  /  204 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1. 回顾
        操作文本文件的字符流
                基本流:
               
                        FileReader
                       
                        FileWriter
                       
                        使用读一个字符数组,写一个字符数组的一部分。
               
                高效流:
                       
                        BufferedReader
                       
                        BufferedWriter
                       
                        使用读一个字符数组,写一个字符数组的一部分。
                       
                        特有:
                                读一行  写一行
                                readLine() -- 读一行但是不包括换行符
                               
                                write(String line)
                                newLine()
                               
        操作二进制流数据的字节流
                基本流:
                        FileInputStream
                        FileOutputStream
                       
                        使用一次读一个字节数组,写一个字节数组的一部分
                       
                高效流:
                        BufferedInputStream
                       
                        BufferedOutputStream
                       
                        使用一次读一个字节数组,写一个字节数组的一部分
                       
2.        
        System.in -- BufferedInputStream -- InputStream
        System.out -- PrintStream -- OutputStream               
                       
                       
3. 转换流

        1) 字节流到字符流的桥梁:InputStreamReader

        案例:键盘录入数据写入文件。
               
                数据从字节流(System.in)流向字符流(BufferedReader),所以是字节到字符的桥梁:InputStreamReader
               
                BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 装饰模式
               
               
               
        2) 字符流到字节流的桥梁:OutputStreamWriter       
                案例: 读取文本文件数据输出到控制台。
                        数据从字符流(BufferedWriter)流向字节流(System.out),所以是字符流到字节流的桥梁:OutputStreamWriter
                       
                BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out))
                       
                       
        注意事项:
                1) 谁到谁的桥梁,要按照数据的流向区分。但实际操作都是把字节流封装成字符流
                2) 转换流是字符流,那么它就只能操作文本文件。
                3) 转换流可以自己指定文件的编码
                        在构造方法的第二个参数,指定。

4. 打印流:
        PrintStream
        PrintWriter -- Wrtier
       
        注意:打印流只有输出流
       
        1) 可以操作任意数据
        2) PrintWriter 自动刷新功能,必须启动,并且使用的是println printf format三个方法
                启动自动刷新 -- 构造方法:
                        PrintWriter(Writer out, boolean autoFlush)
                        PrintWriter(OutputStream out, boolean autoFlush)
        3) PrintWriter可以直接写入文件


5.
        ObjectInputStream
                -- 反序列化
                readObject()
        ObjectOutputStream
                 -- 序列化
                writeObject()
               
        1) 对象能被序列化,需要实现接口 Serializable
        2) 实现接口 Serializable 后,请添加序列化ID


6. 编码表
        目前: GBK
               
        开发中:一般都会采用UTF-8,因为它支持多国语言。
       
        开发中,解决乱码问题:统一编码。
       
7. Properties
        作为集合体系,是Hashtable的子类,键和值都是字符串。
       
        特有功能:
                添加:
                        Object setProperty(String key, String value)
       
                获取:
                        String getProperty(String key)
               
                        String getProperty(String key, String defaultValue)
                       
                        Set<String> stringPropertyNames()
                       
       
        System.getProperties() -- 获取系统属性(调试可能会用到)
       
       
        作为与IO结合的集合类:
                list() -- 将集合中的数据写入流中
               
                load(InputStream is)
                load(Reader r)
                        -- 将流中的数据加载到集合中
       
                store() -- 将集合中的数据保存到流中(文件中)
               
                .properties 文件 -- 配置文件
                        注释文字用 # 开头
       
       
        需求: 我有一个学生类,这个类包含以下成员变量:姓名,语文成绩,数学成绩,英语成绩。
         请从键盘录入5个学生信息,然后按照自己定义的格式存储到文本文件中。
         要求被存储的学生按照分数从高到低排序

       
       
       
       
       
       
       
       
       
       
       
               
                       
               

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马