一、读取键盘录入:
/system.out:对应的是标准输出设备,控制台。system.in:对应的是标准输入设备,键盘。
import java.io.*;
class ReadIn{
public static void main(String[] args){
InputStream in= System.in;
int by=in.read();
system.out.println(by);//例如本程序录入a,回车,则会打印出97,13,10,因为回车符是有\r\n组成
in.close();//本程序不关也可以,因为程序结束,键盘录入也结束了,可通过control+C停止
}
}
1、需求:通过键盘录入数据,当录入一行数据后,就将该行数据进行打印,如果录入的数据时over,那么停止录入。可通过将数据先存到临时缓冲区,读一个存一个,等读完了回车。
代码示例:
import java.io.*;
class ReadIn{
public static void main(String[] args){
InputStream in= System.in;
StringBuilder sb= new StringBuilder();
while(true){
int ch=in.read();
if(ch=="\r")
continue;
if(ch=="\n")
{
String s=sb.toString();
if("over".equals(s))
break;
System.out.println(s.toUpperCase());
sb.delete(0,sb.length());
}
else
sb.append((char)ch);
}
}
}
二、读取转换流
通过上面的键盘录入一行数据并打印其大写,发现其实就是读一行数据的原理。也就是readline方法。那么,能不能直接使用readline方法来完成键盘录入的一行数据的读取呢?我们知道,readline方法是字符流BufferedReader类中的方法,而键盘录入的read方法是InputStream的方法,那么我们可以通过将字节流转换成字符流,在使用字符流缓冲区的readline方法。InputStreamReader专门用于操作字节流的字符流对象,将字节流转换成字符流。在构造是接收一个字节流。
import java.io*;
class TranStreamDemo{
public static void main(String[] args) throws IOException
{
//获取键盘录入
System in=System.in;
//将字节流转换成字符流对象使用转换流。使用InputStreamReader
InputStreamReader isr=new InputStreamReader(in);
//为了提高效率,将字符串进行缓冲区技术高效操作,使用bufferedreader
BufferedReader bufr=new BufferedReader(isr);
String line =null;
while(line=bufr.readLine()!=null){
if("over".equals(line))
break;
system.out.println(line.toUpperCase());
}
burf.close();
}
}
三、写入转换流
InputStreamReader是字节转成字符的,而OutputStreamWriter是字符转换成字节的方法。可使用指定的charset将要写入流中的字符编码成字节,它使用的字符集可以由名称制定或显式给定,否则将接受平台默认的字符集。为了获得最高效率,可考虑将OutputStreamWriter包装到BufferedWriter中,以避免频繁调用转换器。例如:Writer out=new BufferedWriter(System.out));import java.io*;
class TranStreamDemo{
public static void main(String[] args) throws IOException
{
//获取键盘录入最常见写法。
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
OutputStreamWriter osw=new OutputStreamWriter(System.out)
BufferedWriter bufw=new BufferedWriter(osw)
String line =null;
while(line=bufr.readLine()!=null){
if("over".equals(line))
break;
osw.write(line.toUpperCase());
osw.flush()
}
burf.close();
}
}