来源: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();
}
}