★转换流功能1:充当字节流与字符流之间的桥梁
需求:模拟英文聊天程序,要求:
(1) 从键盘录入英文字符,每录一行就把它转成大写输出到控制台;
(2) 保存聊天记录到字节流文件。
要求1的设计分析:
1)需要从键盘接收录入,得用System.in,它是字节输入流InputStream;
2)需要处理字符,可以自己把字节强转成字符,也可以用字符流;
3)需要类似readLine的功能,而这
package ThreadIO2_1.IO.transfer;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
public class TranStreamDemo {
public static void main(String[] args) throws IOException {
/**
* 输入
*/
InputStream in=System.in;
InputStreamReader isr=new InputStreamReader(in);
BufferedReader br=new BufferedReader(isr);
/**
* 输出
*/
OutputStream out=new FileOutputStream("chat.txt");
OutputStreamWriter osw=new OutputStreamWriter(out);
BufferedWriter bw=new BufferedWriter(osw);
String line=null;
while((line=br.readLine())!=null){
if("over".equals(line)){
/**
* 养成好的代码习惯:调用String中的方法时,
* 把常量字符串放在前面,防止变量为null而导致异常
*/
break;
}
System.out.println(line.toUpperCase());//换成大写
bw.write(line);
bw.newLine();
bw.flush();
}
}
}
个方法在字符流BufferedReade r中有(而且该类有缓冲增速)。
综上,采用转换流把字节流转成 要求2的设计分析:字符流处理比较合理,即使用InputStreamReader
要求2的设计分析:
1)需要把字符数据按行保存到字节流文件 ;
2)字符流采用BufferedWriter比较合适,因为它有newLine方法且能实现高效;
3)字节流文件,得采用FileOutputStream。
综上,采用转换流把字符流转成字节流处理比较合理,即使用OutputStreamWriter