IO_打印流_装饰设计模式JAVA161-162

来源:http://www.bjsxt.com/
一、S02E161_01IO_打印流

package com.test.io.others;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
/**
 * PrintStream  打印流 处理流
 */
public class PrintStreamTest {
    public static void main(String[] args) throws FileNotFoundException {
        System.out.println("TEST");

        PrintStream ps = System.out;
        ps.println(false);

        //打印到文件
        File des = new File("G:/java/test/printStream.txt");
        ps = new PrintStream(new BufferedOutputStream(new FileOutputStream(des)));
        ps.println("PrintStream is so easy...");
        ps.close();
    }
}
package com.test.io.others;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileDescriptor;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.util.Scanner;
/**
 * 三个常量
 * 1、System.in  输入流 键盘输入
 * 2、System.out 输出流 控制台输出
 *    System.err
 * 重定向(默认:标准输入是键盘,标准输出是控制台)
 * setIn()
 * setOut()
 * setErr()
 * FileDescriptor.in    标本输入流
 * FileDescriptor.out   标本输出流
 * FileDescriptor.err
 */
public class SystemTest {
    public static void main(String[] args) throws IOException {
        testOut();
        testIn();
        testRedirect();
    }
    public static void testOut(){
        System.out.println("out");
        System.err.println("err");//跟out功能一样的,只是文本颜色是红色的
    }
    public static void testIn() throws IOException{
        InputStream is = System.in;//键盘输入
        Scanner sc = new Scanner(is);
        System.out.println("请输入:");
        System.out.println(sc.nextLine());
        is.close();
        sc.close();     
        //从文件中
        is = new BufferedInputStream(new FileInputStream("G:/java/test/PrintStream.txt"));
        sc = new Scanner(is);
        System.out.println(sc.nextLine());//print:PrintStream is so easy...
        is.close();
        sc.close();
    }
    /**
     * 重定向
     * @throws FileNotFoundException 
     */
    public static void testRedirect() throws FileNotFoundException{
        System.setOut(
                    new PrintStream(
                            new BufferedOutputStream(new FileOutputStream("G:/java/test/redirect.txt")),true));//true自助刷新
        System.out.println("a");//控制台-->>文件
        //回控制台
        System.setOut(
                    new PrintStream(
                            new BufferedOutputStream(new FileOutputStream(FileDescriptor.out)),true));
        System.out.println("back...");
    }
}
package com.test.io.others;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
/**
 * 封装输入
 */
public class BufferedIn {
    public static void main(String[] args) throws IOException {
        InputStream is = System.in;
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        System.out.println("请输入...");
        String msg = br.readLine();
        System.out.println(msg);
    }
}

二、S02E162_01IO_装饰设计模式
处理流是对节点流的包装,对节点流进行装饰,使用了装饰设计模式
例如:类Amplifier对类Voice进行包装

package com.test.io.pattern;

public class Voice {
    private int voice = 10;
    public Voice() {
    }
    public int getVoice() {
        return voice;
    }
    public void setVoice(int voice) {
        this.voice = voice;
    }
    public void say(){
        System.out.println(voice);
    }
}
package com.test.io.pattern;
/**
 * 扩音器
 * 类与类之间的关系
 * 1、依赖:形参或局部变量
 * 2、关联:属性
 *      聚合:属性   整体与部分   不一致的生命周期    人与手
 *      组合:属性   整体与部分   一致的生命周期     人与大脑
 * 3、继承:父子类关系
 * 4、实现:接口与实现类关系
 */
public class Amplifier {
    private Voice voice;
    public Amplifier() {
    }
    public Amplifier(Voice voice) {
        super();
        this.voice = voice;
    }
    public void say(){
        System.out.println(voice.getVoice()*1000);
    }
}
package com.test.io.pattern;

public class App {
    public static void main(String[] args) {
        Voice v = new Voice();
        v.say();
        Amplifier am = new Amplifier(v);
        am.say();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值