IO、字节流

字符流:

FileReader  -- FileWriter 

BufferedReader  -- BufferedWriter

字节流:

FileInputStream   --  FileOutputStream

BufferedInputStream -- BufferedOutputStream

package CoreJavaPractice;

import java.io.*;
public class Practice_2 {
        public static void main(String[] args) throws IOException  {
            
            /*
              需求、通过键盘录入数据,当录入一行后,就将这该数据进行打印
                   如果录入的是over的时候,那就停止录入。

通过一番代码操作,发现其实就是读取一行的原理。 也就是 readLine()方法
So? 能不能用readLine()方法来完成键盘录入的一行数据的读取呢?
readLine()方法是字符流BufferedReader类中的方法
而键盘录入的read方法是字节流InputStream的方法。
那么能不能将字节流转化成字符再使用字符流缓冲区的readLine()方法呢?
*/
InputStream in = System.in; StringBuilder sb = new StringBuilder(); while(true) { int ch = in.read(); if(ch=='\r') { continue; } if(ch=='\n') { String s = sb.toString(); if("over".equals(s)) { break; } System.out.println(s.toUpperCase()); sb.delete(0,sb.length()); } else { sb.append((char)ch); } } } }


大哥版本、 大哥版本 、 转换流。 字节-----字符流
package CoreJavaPractice;

import java.io.*;
public class Practice_2 {
    public static void main(String[] args) throws IOException  {
            
        InputStream in = System.in;
        
        // 利用字节流 转换成 字符流、 InputStreamReader 
        // 然后就可以升级成大哥版本  代码舒服
        
        InputStreamReader inr = new InputStreamReader(in);
        BufferedReader bufr = new BufferedReader(inr);
        String line = null;
        while((line=bufr.readLine())!=null)
        {
            if("over".equals(line))
            {
                break;
            }
            System.out.println(line.toUpperCase());
            
        }
        bufr.close();
            
    }
}

 

 转换: OutputStreamWriter ----- 是字符流通向字节流的桥梁      大大大大大哥、、、再升级版
package CoreJavaPractice;

import java.io.*;
public class Practice_2 {
    public static void main(String[] args) throws IOException  {
            
        InputStream in = System.in;
        InputStreamReader inr = new InputStreamReader(in);
        BufferedReader bufr = new BufferedReader(inr);
        
        
        OutputStream out = System.out;
        OutputStreamWriter osw = new OutputStreamWriter(out);
        BufferedWriter bufw = new BufferedWriter(osw);
        
        String line = null;
        while((line=bufr.readLine())!=null)
        {
            if("over".equals(line))
            {
                break;
            }
            bufw.write(line.toUpperCase());
            bufw.newLine();
            bufw.flush();
        }
        bufr.close();
            
    }
}

 

 

posted @ 2019-09-10 16:30  蚂蚁雅黑1010  阅读(146)  评论(0编辑  收藏  举报