其他流
打印流:PrintStream和PrintWriter
只有输出流,没有输入流。System.out、System.err是PrintStream的实例变量。
转换流:InputStreamReader和OutputStreamWriter
实现从字节流到字符流的转换,是适配器设计模式的应用。
字节数组流ByteArrayInputStream和ByteArrayOutputStream
是节点流,数据源是字节数组,可以实现各种基本和引用数据类型与字节数组之间的相互转换。
Java IO流的设计使用了装饰模式,动态组装流,可以减少子类的数量,是继承的一种替代方案。
【示例9】认识其他IO流
public class Test {
public static void main(String[] args) throws IOException {
//1.打印流 只有输出流,没有输入流
PrintStream ps; //字节流 System.out System.err
PrintWriter pw; //字符流 后面讲解Servlet时会使用
//System.out就是PrintStream的一个引用变量
System.out.println();
//System.err也是PrintStream的一个引用变量
System.err.println();
//println()强大作用:不管什么类型数据,都给你变成字符串,并输出
//2.转换流
//接收键盘的输入一行数据,并输出
//接收一行数据,需要使用BufferedReader(或者Scanner)。接收键盘的输入,需要使用System.in;
// InputStream is = System.in; //三相插头
//将字节输入流InputStream转换为字符输入流Reader 三相转两相的转换头
// Reader reader = new InputStreamReader(is);
// BufferedReader br = new BufferedReader(reader);//两相的插座
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new FileWriter("e:/bjsxt.txt"));
//使用两个流完成按行读取的功能
//中转站就是一个字符串,存储一行数据
//先读一行
String str = br.readLine();
while(!"bye".equals(str) ){
//再写一行
bw.write(str);
//bw.write("\r\n");不同操作系统中换行符是不同的
bw.newLine();
//再读一行
str = br.readLine();//!!!
}
//关闭两个流
br.close();
bw.close();
FileInputStream fis; //节点流 数据源是文件
FileOutputStream fos;//节点流 目的地是文件
//数组流 节点流 数据源和目的地都是数组
ByteArrayInputStream bais;
ByteArrayOutputStream baos;
}
}