读取转换流
读取键盘录入
当录入一行数据后,就将该行数据进行打印;
如果录入的数据是over,那么停止录入;
package com.javaxl.io.byteStream;
import java.io.IOException;
import java.io.InputStream;
/**
* @author 小李飞刀
* @site www.javaxl.com
* @company
* @create 2019-06-11 20:52
*/
public class ReadInDemo {
public static void main(String[] args) throws IOException {
InputStream in = System.in;
StringBuilder sb = new StringBuilder();
while (true){
int by = in.read();
if(by == '\r'){
continue;
}else if(by == '\n'){
String s = sb.toString();
if("over".equals(s)){
break;
}
System.out.println(s.toUpperCase());
sb.delete(0,sb.length());//录入的数据打印在控制台后,就可以将缓冲区中的数据给清空了
}else {
sb.append((char)by);
}
}
}
}
该代码似成相识
字节流通向字符流 InputStreamReader
通过刚才的键盘录入一行数据并打印其大写,发现其实就是读一行数据的原理,也就是readLine方法的原理;
能不能直接使用readLine方法来完成键盘录入的一行数据的读取呢?
readLine方法是字符流BufferedReader类中的方法;
可键盘录入的read方法是字节流InputStream的方法;
那么能不能将字节流转换成字符流再使用字符流缓冲区的readLine方法呢?
package com.javaxl.io.byteStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
/**
* @author 小李飞刀
* @site www.javaxl.com
* @company
* @create 2019-06-11 20:52
*/
public class ReadInDemo2 {
public static void main(String[] args) throws IOException {
// 获取键盘录入对象
InputStream in = System.in;
// 将字节流对象转成字符流对象,使用转换流 InputStreamReader
// 为了提升效率,将字符串进行缓冲区技术高效操作,使用bufferedReader
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String s = null;
while ((s = br.readLine())!=null){
if("over".equals(s)){
break;
}
System.out.println(s.toUpperCase());
}
br.close();
}
}
字符流通向字符流 OutputStreamWriter


网上参考图

使用转换流将字符串打印在控制台
package com.javaxl.io.byteStream;
import java.io.*;
/**
* @author 小李飞刀
* @site www.javaxl.com
* @company
* @create 2019-06-11 20:52
*/
public class ReadInDemo3 {
public static void main(String[] args) throws IOException {
// 键盘录入
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 控制台打印
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String s = null;
while ((s = br.readLine())!=null){
if("over".equals(s)){
break;
}
bw.write(s.toUpperCase());
bw.newLine();
bw.flush();
}
br.close();
bw.close();
}
}
备案号:湘ICP备19000029号
Copyright © 2018-2019 javaxl晓码阁 版权所有