黑马程序员技术交流社区

标题: 字符流要掌握的重点总结互动一下! [打印本页]

作者: 追梦天涯33    时间: 2015-8-24 23:06
标题: 字符流要掌握的重点总结互动一下!
1:字符流(掌握)
        Reader
                |--InputStreamReader
                        |--FileReader
                |--BufferedReader
        Writer
                |--OutputStreamWriter
                        |--FileWriter
                |--BufferedWriter

        针对文本文件这样的数据操作。
        基本的读取和基本的写入,单独使用也是要求掌握的。
       
        掌握:(5种方式)
                把c:\\a.txt复制到d:\\b.txt中。

        (1)FileWriter写入数据
                操作步骤:
                        A:创建字符输出流对象
                        B:调用对象的write()方法
                        C:释放资源

                代码体现:
                        FileWriter fw = new FileWriter("fw.txt");

                        fw.write("hello,IO");
                        //fw.flush();

                        fw.close();

                几个小问题?
                        A:创建字符输出流对象做了那几件事情?
                        B:为什么要flush()?
                        C:为什么要close()?
                        D:flush()和close()的区别?
                        E:怎么实现换行?
                        F:怎么实现追加写入?
                        G:文件不存在,会创建一个。文件如果存在,到底是重新创建,还是把内容给清空?
        (2)FileReader读取数据
                操作步骤:
                        A:创建字符输入流对象
                        B:调用对象的read()方法
                        C:释放资源

                代码体现:
                        FileReader fr = new FileReader("fw.txt");

                        //方式1
                        //一次读取一个字符
                        int ch = 0;
                        while((ch=fr.read())!=-1) {
                                System.out.print((char)ch);
                        }


                        //方式2
                        //一次读取一个字符数组
                        char[] chs = new char[1024];
                        int len = 0;
                        while((len=fr.read(chs))!=-1) {
                                System.out.print(String.valueOf(chs,0,len));
                        }

                        fr.close();
        (3)复制文本文件
                数据源:
                        看用那种类型的流,读取数据。
                目的地:
                        看用那种类型的流,写出数据。

                案例:
                        把当前项目路径下的Demo.txt复制到d盘目录下的Copy.txt中。

                代码体现:
                        方式1:
                                FileReader fr = new FileReader("Demo.txt");
                                FileWriter fw = new FileWriter("d:\\Copy.txt");

                                int ch = 0;
                                while((ch=fr.read())!=-1) {
                                        fw.write(ch);
                                }

                                fw.close();
                                fr.close();


                        方式2:
                                FileReader fr = new FileReader("Demo.txt");
                                FileWriter fw = new FileWriter("d:\\Copy.txt");

                                char[] chs = new char[1024];
                                int len = 0;
                                while((len=fr.read(chs))!=-1) {
                                        fw.write(chs,0,len);
                                }

                                fw.close();
                                fr.close();


2:转换流(理解)
        InputStreamReader isr = new InputStreamReader(System.in);
        InputStreamReader isr = new InputStreamReader(new FileInputStream(...));

        OutputStreamWriter osw = new OutputStreamWriter(System.out);
        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(...));

3:字符编码(理解)
        (1)编码表
                字符及其对应的数值组成的一张表。
        (2)常见的码表:
                ASCII,ISO-8859-1,GB2312,GBK,GB18030,BIG5,UTF-8
        (3)编码应用:
                A:IO流中(转换流)
                B:字符串

                最好编码一致。



作者: aguang    时间: 2015-8-25 10:47
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(...));
作者: 追梦天涯33    时间: 2015-8-25 21:18
像这样的代码看似很闹心其实已肢解,还是挺简单的!
作者: wqhhxx    时间: 2015-8-25 21:36
还没学到,先赞一个




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2