三.流类(接2)
1.字节流与字符流的转换
InputStreamReader用于将一个字节流中的字节解码成字符,
OutputStreamWriter 用于将写入的字符编码成字节后写入一个字节流。
.为了达到最高的效率,使用BufferedWriter 类包装OutputStreamWriter类,用BufferedReader类包装InputStreamReader类。
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
读取一行字符
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String strLine = in.readLine();
可见,构建BufferedReader对象时,必须传递一个Reader类型的对象作为参数,而键盘对应的System.in 是一个 InputStream类型的对象,所以这里需要用到一个InputStreamReader的转换类,将System.in转换成字符流之后,放入到字符流缓冲区之中,之后从缓冲区中每次读入一行数据。
package dataStructure;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BufferDemo {
public static void main(String[] args) {
BufferedReader buf =null;
//对BufferedReader对象实例化
//从键盘输入>需要使用System.in进行实例化(System.in属于InputStream类型)>使用InputStreamReader将字节流转为字符流>把字符流放入BufferedReader中
buf =new BufferedReader(new InputStreamReader(System.in));
String str = null;
while (true) {
System.out.println("请输入数字: ");
try {
str =buf.readLine();
} catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}
int i =-1;
try {
//将输入的字符串转换成基本数据类型中的整型
i = Integer.parseInt(str);
i++;
System.out.println("输入的数字修改后为: "+ i);
break;
} catch (Exception e) {
// TODO: handle exception
System.out.println("error,try again");
}
}
}
}