package org.java.io;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Scanner;
/**
*
* 功能需求:从控制输出数据,读取键盘录入
* System.out对应的标准输出设备:控制台,显示器
* System.in标准的输入设备:键盘
*
*/
public class InputStreamReaderTest {
public static void main(String[] args) throws IOException {
//readIn_1();
//readIn_2();
readIn_3();
}
/***此方法是java封装,我们最常用的一种从控制台输入*/
public static void readIn_1(){
Scanner input=new Scanner(System.in);
String inputValue=input.nextLine();
System.out.println("result:"+inputValue);
}
/**一下代码和readLine方法原理是一样的,所以*/
public static void readIn_2() throws IOException{
InputStream input=System.in;
StringBuffer sb=new StringBuffer();
int len=0;
while((len=input.read())!=-1){
if(len=='\r')
continue;
if(len=='\n'){
String s=sb.toString();
if(s.equals("exit"))
break;
System.out.println(s);
//清空
sb.delete(0, sb.length());
}else
sb.append((char)len);
}
input.close();
}
/*
* InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。
每次调用 InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。
为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。例如:
BufferedReader in
= new BufferedReader(new InputStreamReader(System.in));
转换流
*/
public static void readIn_3() throws IOException{
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
String buf=null;
while((buf=reader.readLine())!=null){
if(buf.equals("exit"))
break;
System.out.println(buf);
}
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Scanner;
/**
*
* 功能需求:从控制输出数据,读取键盘录入
* System.out对应的标准输出设备:控制台,显示器
* System.in标准的输入设备:键盘
*
*/
public class InputStreamReaderTest {
public static void main(String[] args) throws IOException {
//readIn_1();
//readIn_2();
readIn_3();
}
/***此方法是java封装,我们最常用的一种从控制台输入*/
public static void readIn_1(){
Scanner input=new Scanner(System.in);
String inputValue=input.nextLine();
System.out.println("result:"+inputValue);
}
/**一下代码和readLine方法原理是一样的,所以*/
public static void readIn_2() throws IOException{
InputStream input=System.in;
StringBuffer sb=new StringBuffer();
int len=0;
while((len=input.read())!=-1){
if(len=='\r')
continue;
if(len=='\n'){
String s=sb.toString();
if(s.equals("exit"))
break;
System.out.println(s);
//清空
sb.delete(0, sb.length());
}else
sb.append((char)len);
}
input.close();
}
/*
* InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。
每次调用 InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。
为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。例如:
BufferedReader in
= new BufferedReader(new InputStreamReader(System.in));
转换流
*/
public static void readIn_3() throws IOException{
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
String buf=null;
while((buf=reader.readLine())!=null){
if(buf.equals("exit"))
break;
System.out.println(buf);
}
}
}