Java学习笔记Java学习笔记

装饰者模式——IO流运用

2016-12-22  本文已影响158人  向日花开

推荐博客
Java设计模式学习09
Java设计模式学习09
Java设计模式学习09

装饰者模式还是比较难懂的。。。。,我也说不了啥,详解看上面博客,下面案例是我仿照上面博客写的。
结果

我们可以看到,实例化女人1的时候换了一个实例组合,于是就出现了新的功能。。。

字符输出流使用缓冲----FileReader和BufferedReader

BufferedReaderr缓冲字符输出流,直接继承自Reader

构造方法

public BufferedReader(Reader var1, int var2) {
        super(var1);
        this.markedChar = -1;
        this.readAheadLimit = 0;
        this.skipLF = false;
        this.markedSkipLF = false;
        if(var2 <= 0) {
            throw new IllegalArgumentException("Buffer size <= 0");
        } else {
            this.in = var1;
            this.cb = new char[var2];
            this.nextChar = this.nChars = 0;
        }
    }

    public BufferedReader(Reader var1) {
        this(var1, defaultCharBufferSize);
    }

同BufferWriter一样,两个构造方法。实例化的时候需要一个Reader实例。

运用案例
/**
 * 读取Demo6.java的内容
 */
public class Demo{
    public static final String PATH = "/Volumes/huang/studyfromGitHub/JavaForAndroid/JavaForAndroid/series10/src/main/java/com/example/Demo6.java";

    public static void main(String[] args) {
        //1.申明
        FileReader reader = null;
        BufferedReader bufferedReader = null;
        try {
            //2.实例化
            reader = new FileReader(PATH);
            bufferedReader = new BufferedReader(reader);
            //3.读取
            String msg=null;
            while ((msg=bufferedReader.readLine())!=null){//如果是null,则表示文件结束
                System.out.println(msg);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                bufferedReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
}
结果

装饰者模式再运用----自定义BufferReader

结果

缓冲字符输入,输出流复制文件案例

讲道理正长是这样写

    public class Demo {
        //拷贝源文件
        public static final String PATH = "/Volumes/huang/studyfromGitHub/JavaForAndroid/JavaForAndroid/series10/src/main/java/com/example/Demo6.java";
        public static final String NAME = "testDemo9.java";

        public static void main(String[] args) {
            FileReader reader = null;
            BufferedReader bufferedReader = null;

            FileWriter fileWriter = null;
            BufferedWriter bufferedWriter = null;

            try {
                reader = new FileReader(PATH);
                bufferedReader = new BufferedReader(reader);

                fileWriter = new FileWriter(Config.PATH + NAME);
                bufferedWriter = new BufferedWriter(fileWriter);
                String line = null;
                while ((line = bufferedReader.readLine()) != null) {
                    //读一行,写一行
                    bufferedWriter.write(line);
                    bufferedWriter.flush();
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    bufferedReader.close();
                    bufferedWriter.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

        }
    }

运行一看结果,傻眼了:



它一行写到死。这可不行,我们看一下,除了没换行,其他都对,那我们控制它换行就可以了。

上一篇 下一篇

猜你喜欢

热点阅读