处理流的实例
BufferedReader属于字符流,全称字符输入处理流。
优势是一次读取一行的信息
public Sring readLine()
throwsIOExceptio
生成对象的方法
BufferedReader in = new BufferedReader(newFileReader(“foo.in”));
将Reader作为对象。
函数:readLine():一次读取一行返回一个字符串。
“装饰者(Decorator)”模式
装饰者:为被装饰者添加功能。
BufferedReader为装饰者。
FileReader为被装饰者。
装饰者和被装饰者必须同属于一类,可以互相转换。
//创建接口Worker
interface Worker{
public void doSomeWork();
}
//创建水管工类
class Plumber implements Worker{
public void doSomeWork(){
System.out.println("修水管");
}
}
//创建木匠
class Carpenters implements Worker{
public void doSomeWork(){
System.out.println("木匠");
}
}
//创建Aworker类作为装饰者
class AWorker implements Worker{
private Worker worker;
public AWorker(Worker worker){
this.worker = worker;
}
public void doSomeWork(){
System.out.println("nihao");
worker.doSomeWork();
}
}
//
public class Test01{
public static void main(String[] args){
//生成一个水管工对象
Plumber plumber = new Plumber();
//生成一个AWorker对象
AWorker aWorker = new AWorker(plumber);
aWorker.doSomeWork();
Carpenters capenter = new Carpenters();
AWorker aWorker1 = new AWorker(capenter);
aWorker1.doSomeWork();
}
}
节点流与处理流的关系
节点流为被装饰者,处理流为装饰者。
转换流的使用
import java.io.*;
public class TestTransForm1 {
public static void main(String[] args) {
InputStreamReader s = new InputStreamReader(System.in);
BufferedReader b = new BufferedReader(s);
String str = null;
try{
str = b.readLine();
while(str != null) {
if(str.equalsIgnoreCase("exit")) {
break;
}
System.out.println(str.toUpperCase());
str = b.readLine();
}
b.close();
}
catch(IOException e ) {
e.printStackTrace();
}
}
}