读取转换流
读取键盘录入
当录入一行数据后,就将该行数据进行打印;
如果录入的数据是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晓码阁 版权所有