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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Boint 中级黑马   /  2015-9-4 23:03  /  290 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1:IO流
        (1)分类
                字节流:
                        输入流:
                                InputStream
                                        int read()
                                        int read(byte[] bys)
                                FileInputStream
                                BufferedInputStream
                        输出流:
                                OutputStream
                                        write(int by)
                                        write(byte[] bys,int index,int len)
                                FileOutputStream
                                BufferedOutputStream

                字符流:
                        输入流:
                                Reader
                                        int read()
                                        int read(char[] chs)
                                FileReader
                                BufferedReader
                                        String readLine()
                        输出流:
                                Writer
                                        write(int ch)
                                        write(char[] chs,int index,int len)
                                FileWriter
                                BufferedWriter
                                        write(String line)
                                        void newLine()
        (2)到底使用谁?
                如果能用记事本打开,不出现乱码,就优先使用字符流;否则用字节流。
                确定上面的情况以后,一般都是用高效流(BufferedXxxx)

               
        (3)复制文本文件:
                9种方式:
                        字节流:
                                4种
                                        基本流每次操作一个字节
                                        基本流每次操作一个字节数组
                                        高效流每次操作一个字节
                                        高效流每次操作一个字节数组(★)
                        字符流:
                                5种
                                        基本流每次操作一个字符
                                        基本流每次操作一个字符数组
                                        高效流每次操作一个字符
                                        高效流每次操作一个字符数组(★)
                                        高效流每次操作一行文本(★)

                思路:
                        1. 创建缓冲字符输入流对象(建立于文件系统中文件的对应关系)
                        2. 创建缓冲字符输出流对象(建立于文件系统中文件的对应关系)
                        3. 使用输入流对象的read方法,读出源文件中内容(显示/其他操作)
                        4. 使用输出流对象的write方法,写入数据到目的地文件(需要刷新)
                        5. 关闭流,释放资源

                怎么选择使用?
                       

                代码体现:
                        数据源:a.txt
                        目的地:b.txt

                思路:
                        1. 创建缓冲字符输入流对象(建立于文件系统中文件的对应关系)
                        2. 创建缓冲字符输出流对象(建立于文件系统中文件的对应关系)
                        3. 使用输入流对象的read方法,读出源文件中内容(显示/其他操作)
                        4. 使用输出流对象的write方法,写入数据到目的地文件(需要刷新)

                       

        (4)复制二进制流数据:(图片,视频,音频等)
                字节流:
                                4种
                                基本流每次操作一个字节
                                基本流每次操作一个字节数组
                                高效流每次操作一个字节
                                高效流每次操作一个字节数组(★)
               
               

                怎么选择使用?
                        选用高效流每次操作一个字节数组

                代码体现:
                        数据源:c:\\a.jpg
                        目的地:d:\\b.jpg

                思路:
                        1. 创建缓冲字节输入流对象(建立于文件系统中文件的对应关系)
                        2. 创建缓冲字节输出流对象(建立于文件系统中文件的对应关系)
                        3. 使用输入流对象的read方法,读出源文件中内容(显示/其他操作)
                        4. 使用输出流对象的write方法,写入数据到目的地文件(需要刷新)
                        5. 关闭流,释放资源

2:转换流(理解)
        (1)如果有字节流对象,为了使用字符流的功能,就必须使用转换流进行操作。


3:打印流(掌握)
        (1)打印流是写数据的。
        (2)特点:
                A:可以写任意数据类型的数据
                B:如果启动了自动刷新,能自动刷新,还会换行。println()
                C:可以直接往文件写数据
                        注意:哪些流对象可以直接读写文件?
                        看构造方法,如果同时有String和File的构造参数,那么该流对象就可以读写文件。
        (3)用打印流改进复制文本文件的操作


4:序列化流(理解)
        (1)序列化:把对象按照流一样的方式在网络中传输,或者存储到文本文件
           反序列化:把流数据还原成对象
        (2)如何实现序列化?
                A:被序列化的对象所属的类必须实现序列化接口
                B:用序列化流对象进行操作
        (3)序列化(对象)流对象
                ObjectInputStream:
                        Object readObject()
                ObjectOutputStream:
                        void writeObject(Object obj)
        (4)掌握:
                A:看到类实现了序列化接口,就知道该类可以被序列化流对象操作
                B:看到类实现了序列化接口,知道点击鼠标就可以解决黄色警告问题
5:字符编码(理解)
        (1)编码表:
                就是字符和对应的数据组成的一张表。
        (2)常见的编码表:
                ASCII
                ISO-8859-1
                GBK
                GB2310
                GB18030
                UTF-8
                BIG5        --        自己问问度娘
        (3)转换流中的编码问题
                A:字符流 = 字节流+编码表
                B:通过转换流写入数据,指定为UTF-8编码,并通过UTF-8编码读取。
6:Properties(理解)
        (1)是Map体系一个集合类。
        (2)特点:
                A:可以把集合中的数据保存到文本文件,也可以把文本文件的数据加载到集合中。
                B:该集合的键和值都是String类型
        (3)特殊功能:
                A:setProperty(String key,String value)
                B:getProperty(String key)
                  getProperty(String key,String defaultValue)
                C:Set<String> stringPropertyNames()
        (4)和IO流结合的方法:
                A:list 通过打印流把数据保存到文件中
                B:load 通过任意流把文本中的数据加载到集合中
                C:store 通过任意流把数据保存到文件中
        (5)案例:
                查找文件中是否有键为lisi的,如果有,则修改其值为50

0 个回复

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