zoukankan      html  css  js  c++  java
  • 转换流InputStreamReader、OutputStreamWriter

    转换流什么使用。

    字符和字节之间的桥梁(转换流),通常,涉及到字符编码转换时,需要用到转换流。

    InputStreamReaderDemo:

     1 import java.io.*;
     2 //为方便演示便省略异常处理。
     3 class SystemDemo2
     4 {
     5     public static void main(String[] args)throws IOException
     6     {
     7         InputStream in = System.in;
     8         InputStreamReader ins = new InputStreamReader(in);
     9         BufferedReader bufr = new BufferedReader(ins);
    10         while (true)
    11         {
    12             String s = bufr.readLine();
    13             System.out.println(s.toUpperCase());
    14             if (s.equals("over"))
    15             {
    16                 break;
    17             }
    18         }
    19         //bufr.close();爆出了无法访问的语句,可能是此缓存区最终的数据时键盘所以无需关闭流。
    20     }
    21 }
    View Code

    键盘的最常见写法:

    BufferedReader bufr = new BufferedReader(new InputStream(System.in));
    

    OutputStreamWriterDemo:

     1 import java.io.*;
     2 class OutputStreamReaderDemo
     3 {
     4     public static void main(String[] args) throws IOException
     5     {
     6         OutputStream out = System.out;//创建输出对象。
     7         OutputStreamWriter outw = new OutputStreamWriter(out);//转换流对象,将需要转换的字节流作为参数传入转换流对象
     8         BufferedWriter bufw = new BufferedWriter(outw);//缓冲区
     9         bufw.write("afd");//调用写出方法
    10         bufw.flush();//刷新
    11         bufw.close();//关闭资源
    12 //        //三行变一行输出方式
    13 //        BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
    14     }
    15 }
    View Code

    InputStream、OutputSreamDemo:(综合)

     1 import java.io.*;
     2 
     3 class  TransStreamDemo
     4 {
     5     public static void main(String[] args) throws IOException
     6     {
     7         //获取键盘录入对象。
     8         //InputStream in = System.in;
     9 
    10         //将字节流对象转成字符流对象,使用转换流。InputStreamReader
    11         //InputStreamReader isr = new InputStreamReader(in);
    12 
    13         //为了提高效率,将字符流进行缓冲区技术高效操作。使用BufferedReader
    14 
    15         //BufferedReader bufr = new BufferedReader(isr);
    16 
    17 
    18         //键盘的最常见写法。
    19         BufferedReader bufr = 
    20                 new BufferedReader(new InputStreamReader(System.in));
    21 
    22 
    23 
    24 
    25 
    26         
    27 //        OutputStream out = System.out;
    28 //        OutputStreamWriter osw = new OutputStreamWriter(out);
    29 //        BufferedWriter bufw = new BufferedWriter(osw);
    30         BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
    31 
    32 
    33 
    34 
    35         String line = null;
    36 
    37         while((line=bufr.readLine())!=null)
    38         {
    39             if("over".equals(line))
    40                 break;
    41             bufw.write(line.toUpperCase());
    42             bufw.newLine();
    43             bufw.flush();
    44         }
    45 
    46         bufr.close();
    47 
    48     }
    49 }
    View Code

    流操作的基本规律:

    通过三个明确来完成。

    1,明确源和目的。
      源:输入流。InputStream Reader
      目的:输出流。OutputStream Writer。
    2,操作的数据是否是纯文本。
      是:字符流。
      不是:字节流。

    3,当体系明确后,在明确要使用哪个具体的对象。
      通过设备来进行区分:
      源设备:内存,硬盘。键盘
      目的设备:内存,硬盘,控制台。

    Demo:

     1 import java.io.*;
     2 /*
     3     需求:
     4         首先利用三个明确,将一个文本文件打印到控制台上。
     5 */
     6 class test1
     7 {
     8     public static void main(String [] args)throws IOException
     9     {
    10         /*
    11             1.明确源与目的
    12                 源:InputStream    Reader 
    13                 Reader
    14                 目的:OutputStream Writer
    15                 Writer
    16             
    17             2.是否是文本文件?
    18                 是!
    19                 字符流(Reader、Writer)
    20             是否提高效率
    21                 是!加入缓冲区技术
    22             3.通过设备进行区分,确定要使用哪个具体的对象
    23             源设备:硬盘。
    24             目的设备:控制台。
    25         */
    26         //源。
    27         BufferedReader bufr = 
    28             new BufferedReader(new FileReader("F:\线程、IO、集合框架\代码示例\day19\装饰和继承.java"));
    29         //目的
    30         BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
    31 
    32         String line = null;
    33         while ((line=bufr.readLine())!=null)
    34         {
    35             bufw.write(line);
    36             bufw.newLine();
    37             bufw.flush();
    38         }
    39         bufr.close();
    40         bufw.close();
    41     }
    42 }
    View Code
  • 相关阅读:
    在android 5.0以上,如何判断当前应用是在前台还是后台
    Android实现手机摄像头的自动对焦
    抓包获取百度音乐API
    andriod 自定义来电界面功能
    Android 自定义相机
    解决Android拍照保存在系统相册不显示的问题
    有关Color和Drawable你所不知道的那些内容
    Android主题切换方案总结
    设置background属性使用selector的时候内置?attr报错的解决方案
    一步一步解析google camera2 demo(三)
  • 原文地址:https://www.cnblogs.com/gzc911/p/4928990.html
Copyright © 2011-2022 走看看