zoukankan      html  css  js  c++  java
  • Java:IO流之转换流

    IO流的基本流情况:
    字符流:                字符流缓冲区:
    FileReader              BufferedReader
    FileWriter               BufferedWriter
     
    字节流:                字节流缓冲区:
    FileInputStream       BufferedInputStream
    FileOutputStream     BufferedOutputStream
     
    在ReadInDemo.java中通过键盘录入一行的数据并打印其大写,发现其实就是读一行数据的原理。
    也就是readLine方法。
    能不能直接使用readLine方法来完成键盘录入的一行数据的读取呢?
     
    readLine方法是字符流BufferedReader的方法
    而键盘录入的read方法是字节流BufferInputStream的方法
     
    那么能不能将字节流转换为字符流,再使用字符流缓冲区的readLine方法呢?
    ----------------------------------------------------------------------------------------------
    (1)类InputStreamReader:是字节流通向字符流的桥梁
         InputStream in = System.in
         InputStreamReader(InputStream in) 创建一个使用默认字符集的 InputStreamReader。
              
    (2)类OutputStreamWriter:是字符流通向字节流的桥梁
        OutputStream out = System.out
        OutputStreamWriter(OutputStream out) 创建使用默认字符编码的 OutputStreamWriter。
     
    //例子1:      
    需求:通过键盘录入数据,当录入一行数据后,将就改行数据进行打印,
    如果录入的数据是over,那么停止录入
    import java.io.*;
    class TransStreamDemo
    {
        public static void main(String[] args)throws IOException
        {
            /*
            //从键盘录入数据
            InputStream in = System.in;
            
            //将字节流对象转换为字符流对象,使用转换流,InputStreanReader
            InputStreamReader isr = new InputStreamReader(in);
            
            //为了提高效率,将字符串进行高效技术操作,即创建字符流缓冲区流对象
            BufferedReader bufr = new BufferedReader(isr);
            */
    
            //上面三个句子简写成:键盘录入最常见写法
            BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
      
            // OutputStream out = System.out;
            // OutputStreamWriter osr = new OutputStreamWriter(out);
            // BufferedWriter bufw = new BufferedWriter(osr);
                  
            //上面三个句子简写成:
            BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
             
            String line = null;
            
            while((line = bufr.readLine())!=null)
            {
                if("over".equals(line))
                    break;
                bufw.write(line.toUpperCase());
                bufw.newLine();    
                bufw.flush();
            }
            bufr.close();
                  
            /*
            String line = null;
            while((line = bufr.readLine())!=null)
            {
                if("over".equals(line))
                    break;
                System.out.println(line.toString());
            }
            buf.close();
            */
        }
    }
     
    改变标准输入输出设备。
    在System类中:
    static void setIn(InputStream in) 
              重新分配“标准”输入流。 
    static void setOut(PrintStream out) 
              重新分配“标准”输出流。 
    //例子2:
    import java.io.*;
    class TransStreamDemo2
    {
        public static void main(String[] args)throws IOException
        {
            //System.setIn(new FileInputStream("ReadInDemo.java"));//修改读取源
            //System.setOut(new PrintStream("f:\myfile\trans.txt"));//修改打印目的地
        
            BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));//从键盘读入
            BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));//打印在控制台上
                    
            String line = null;
            while((line = bufr.readLine())!=null)
            {
                if("over".equals(line))
                    break;
                bufw.write(line.toUpperCase());
                bufw.newLine();    
                bufw.flush();
            }
            bufr.close();
        }
    }
  • 相关阅读:
    “Installation error: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED”
    【问底】夏俊:深入站点服务端技术(一)——站点并发的问题
    java反射调用方法
    linux 文件操作系统调用
    64位win7中使用vs2013为python3.4安装pycrypto-2.6.1插件报Unable to find vcvarsall.bat异常解决方式
    ViewPager+RadioGroup实现标题栏切换,Fragment切换
    Android View系统解析(下)
    高速学会Mac上托管代码到github(具体解释)
    linux程序设计——多线程(第十二章)
    使用工作流更新子记录
  • 原文地址:https://www.cnblogs.com/XYQ-208910/p/4918556.html
Copyright © 2011-2022 走看看