一、键盘录入
1、标准输入输出流
System.in:对应的标准输入设备,键盘。它是InputStream类型。
Ssytem.out:对应的是标准的输出设备,控制台。是PrintStream类型。
2、转换流的由来
键盘录入时,只能一个字节一个字节进行录入。那么能不能直接使用readLine方法来完成键盘录入的一行数据的读取呢?readLine方法是字符流BufferedReader类中方法。而键盘录入的read方法是字节流InputStream的方法。
那么能不能将字节流转成字符流再使用字符流缓冲区的readLine方法呢?这就需要用到转换流了。
3、转换流的特点:
A、字符流与字节流之间的桥梁
B、方便了字符流与字节流之间的操作
C、字节流中的数据都是字符时,转成字符流操作更高效。
4、 InputStreamReader将字节流通向字符流步骤:
a、获取键盘录入对象。
InputStream in=System.in;
b、将字节流对象转成字符流对象,使用转换流。
InputStreamReaderisr=new InputStreamReader(in);
c、为了提高效率,将字符串进行缓冲区技术高效操作。使用BufferedReader
BufferedReaderbr=new BufferedReader(isr);
注:键盘录入最常见写法
BufferedReaderin=new BufferedReader(new InputStreamReader(System.in));
5、示例:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
/**
* 当录入一行数据后,敲回车就将该行数据进行打印
* @author Administrator
*/
public class TransStreamTest
{
public static void main(String[] args) throws IOException
{
//获取键盘录入对象
InputStream in = System.in;
//将字节流对象转换成字符流对象,使用转换流InputStreamReader
InputStreamReader isr = new InputStreamReader(in);
//为了提高效率,将字符串进行缓冲区技术高效操作,使用bufferedReader
BufferedReader bufr = new BufferedReader(isr);
String line = null;
while (null !=(line = bufr.readLine()))
{
if ("over".equals(line))
{
break;
}
System.out.println(line.toUpperCase());
}
bufr.close();
}
}
<span style="font-family: 宋体; font-size: 10.5pt; letter-spacing: 0pt; text-indent: 21pt; line-height: 19.5pt; background-color: rgb(255, 255, 255);">6</span><span style="font-family: 宋体; font-size: 10.5pt; letter-spacing: 0pt; line-height: 19.5pt; background-color: rgb(255, 255, 255);">、 下面是输入输出常见写法(上面例子修改)</span>
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
/**
* 输入输出转换流,及键盘录入常见写法
* @author Administrator
*/
public class TransStreamTest1
{
public static void main(String[] args) throws IOException
{
//键盘录入常见写法。
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
//输出常见写法
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
String line = null;
while (null != (line = bufr.readLine()))
{
if ("over".equals(line))
break;
bufw.write(line.toUpperCase());
//跨平台换行
bufw.newLine();
//一定要刷新缓冲区
bufw.flush();
}
bufw.close();
}
}