图一:
示例代码:
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.junit.Test;
public class TestOtherStream {
/**
* 标准输入流:System.in 返回InputStream类型
*/
//与test3()相比,更值得推荐
@Test
public void test2() {
BufferedReader br = null;
try {
InputStream is = System.in;//标准输入流
InputStreamReader isr = new InputStreamReader(is);//将字节流转化为字符流
br = new BufferedReader(isr);
BufferedInputStream bis = new BufferedInputStream(is);
String str;
while(!(str = br.readLine()).equalsIgnoreCase("e") && !str.equalsIgnoreCase("exit")) {
System.out.println(str.toUpperCase());
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if(br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
//直接用字节流进行处理,相比之下,test2()将字节流转换成字符流再进行处理更直观
@Test
public void test3() {
BufferedInputStream bis = null;
try {
InputStream is = System.in;
bis = new BufferedInputStream(is);
byte[] b = new byte[1024];
int len;
while(true) {
len = bis.read(b);
if(len == 1 && (char)b[0] == 'e') break;
System.out.print(new String(b , 0 ,len).toUpperCase());
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if(bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}