public class ReadIn {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
* 字符流 FileReader FileWriter BufferedReader BufferedWriter
* 字节流 FileInputStream FileOutputStream BufferedInputSteam BufferedOutputStream
*
*/
//2016.10.11读取键盘录入
//读取键盘录入
//system.in对应的标准输入设备 ,键盘
//system.out 对应的标准输出设备 控制台
InputStream in = System.in;
StringBuffer sb = new StringBuffer();
try {
while (true) {
int ch = in.read();
if (ch == '\r')
continue;
if (ch == '\n'){
System.out.println(sb.toString());
break;
}
else sb.append((char)ch);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
///////////////////////////////////////////////
//通过刚才的键盘录入一行数据并打印其大写,发现其实就是读一行数据的原理
//也就是readLine方法
//能不能直接使用readLine方法来完成键盘录入一行数据的读取呢
//readLine方法是字符流BufferedReader类中的方法
//而键盘录入的Read方法是字节流InputStream的方法
//那么能不能将字节流转成字符流 在使用字符流缓冲区的readLine方法呢?
//获取键盘录入对象
InputStream in = System.in;
//将字节流转成字符流对象, 使用转换流InputSreamReader
InputStreamReader isr = new InputStreamReader(in);
//为了提高效率,将字符串进行缓冲技术高校操作,使用BufferedReader
BufferedReader bur = new BufferedReader(sir);
//获取键盘录入常见写法
//BufferedReader bur = new BufferedReader(new InputStreamReader(System.in));
//输出设备
OutputStream out = System.out;
OutputStreamWriter osw = new OutputStreamWriter(out);
BufferedWriter bw = new BufferedWriter(sow);
String line = null;
try {
while ((line = bur.readLine())!=null) {
if ("over".equals(line)) {
break;
}
//System.out.println(line);
bw.write(line);
bw.newline();//换行
bw.flush();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
bur.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}