博客信息

IO流之字节流(转换流)

发布时间:『 2019-06-11 11:03』  博客类别:java基础  阅读(653)

读取转换流

 

读取键盘录入

当录入一行数据后,就将该行数据进行打印;

如果录入的数据是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

小李飞刀_IO流


小李飞刀_IO流


网上参考图


小李飞刀_IO流


使用转换流将字符串打印在控制台


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();
    }
}





关键字:     Java基础       IO流       字节流       转换流  

备案号:湘ICP备19000029号

Copyright © 2018-2019 javaxl晓码阁 版权所有