现在的位置: 首页 > 综合 > 正文

黑马程序员-IO

2014年03月13日 ⁄ 综合 ⁄ 共 4061字 ⁄ 字号 评论关闭

------- android培训java培训、期待与您交流! ----------

1:字符输入流(掌握)
    (1)Reader -- FileReader 用于读取数据
    (2)FileReader的使用步骤(掌握)
        A:创建字符输入流对象
            注意:在读取的时候,文件一定要存在
        B:调用该对象的方法
            int read()
            int read(char[] chs)
        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(new String(chs,0,len));
            }

            fr.close();
    (3)复制文本文件(掌握)
        思路:
            数据源:a.txt
                从数据源读取数据
            目的地:b.txt
                写入到目的地

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

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

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

            fw.close();
            fr.close();
    (3)高效字符输入输出流(掌握)
        Reader
            |--FileReader
            |--BufferedReader
                String readLine();
        Writer
            |--FileWriter
            |--BufferedWriter
                void newLine();

        带缓冲的流对象,包装类,装饰类。对类的功能进行增强。
    (4)用高效流复制文本文件(掌握)
        需求:
            把d盘目录下的HelloWorld.java复制到e盘目录下的Copy.java中。
            三种方式都要写出来。每一种写一个类里面。

        
    (5)案例:
        A:键盘录入学生信息排序并保存(理解)
        B:遍历某个目录下所有的java文件把路径写入到一个文本文件中(掌握)
        C:思考题
            编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,
            并将原来文件的扩展名从.java改为.jad。(算法与编程)

2:装饰设计模式(理解)
    (1)在使用类本身的功能基础上,可以对类的功能进行增强。
    (2)装饰模式和继承的区别?
        继承:
            让代码看起来更臃肿,耦合性强。
        装饰模式:
            让代码看起来更灵活。
    (3)模拟BufferedReader的使用。
    (4)模拟LineNumberReader的使用。

3:预习字节流的使用。
    完全可以自学。
    InputStream
        |--FileInputStream
        |--BufferedInputStream
    OutputStream
        |--FileOutputStream
        |--BufferedOutputStream
   

1:字节流
    (1)字节流(掌握)
        输入:
            InputStream
                |--FileInputStream
                |--BufferedInputStream
        输出:
            OutputStream
                |--FileOutputStream
                |--BufferedOutputStream
    (2)字节流写入数据(掌握)
        基本步骤:
            创建字节输出流对象
            调用该对象的方法
            释放资源

            FileOutputStream fos = new FileOutputStream("fos.txt");

            fos.write("hello,io,我又来了".getBytes());
            //fos.flush();

            fos.close();

    (3)字节流读取数据(掌握)
        基本步骤:
            创建字节输入流对象
            调用该对象的方法
            释放资源

            FileInputStream fis = new FileInputStream("fos.txt");

            //方式1
            int by = 0;
            while((by=fis.read())!=-1)
            {
                System.out.print((char)by);
            }

            //方式2
            byte[] bys = new byte[1024];
            int len = 0;
            while((len=fis.read(bys))!=-1)
            {
                System.out.print(new String(bys,0,len));
            }

            fis.close();
    (4)案例:(掌握)
        A:用字节流复制文本文件(了解)
        B:用字节流复制图片
        C:用字节流复制MP3
        D:测试四种方式复制MP3

2:IO流的结构图(掌握)

3:IO流的操作规律(掌握)
    A:文件 -- 文件
    B:文件 -- 控制台显示
    C:键盘录入 -- 文件
    D:键盘录入 -- 控制台显示

4:案例(理解)
    A:登录注册
    B:购物

1:打印流(掌握)
    (1)专门用于把数据进行输出。分为字节打印流和字符打印流。
    (2)打印流的特点:(掌握)
        A:可以写入多种数据类型的数据。
            write
            print
            println
        B:如果你开启了自动刷新,在使用println方法时,会自动刷新并换行。
        C:是可以直接操作设备的流。

        针对每个特点都有案例。
    (3)案例(掌握)
        A:键盘录入,写入文本文件。用打印流实现。
        B:复制文本文件,用打印流实现。

2:对象流(理解)
    (1)用于把对象当做流一样的方式使用,java提供了对象流。
        ObjectInputStream
            Object readObject()
        ObjectOutputStream
            void writeObject(Object obj)
    (2)用对象流写入数据
        对象想要被对象流操作,就必须实现序列化接口。
        最好给出序列化id值。
    (3)序列化(流):对象 -- 流
       反序列化(流):流 -- 对象

3:Properties(掌握)
    (1)它是用来处理属性文件的集合类。
    (2)它的特殊方法(理解)
        list:用打印流保存数据
        load:传递最基本的字符或者字节流读取数据
            举例:玩游戏的进度加载
        store:传递最基本的字符或者字节流写入数据
            举例:玩游戏的进度保存
    (3)案例:(掌握)
        查找某个文件中是否存在键为lisi的数据,如果有,把值改为50。
        
4:编码问题(理解)
    (1)编码表:把字符数据用数据表示。
        ASCII,ISO-8859-1,GBK,GB2312,UTF-8
    (2)编码问题在流中如何体现:
        在用流的时候,只有转换流是可以指定编码的。
        字符流 == 字节流 + 编码表

        FileWriter == FileOutputStream + GBK
    (3)编码问题在字符串中的体现:
        编码:把看得懂的变成看不懂的。
            字符串 -- 字节数组
        解码:把看不懂的变成看得懂的。
            字节数组 -- 字符串
   

【上篇】
【下篇】

抱歉!评论已关闭.