• IO—转换流和键盘录入


    简单来说,由于方法的局限性和功能的需要,特此产生了转换流。

    InputStreamReader是字节流转换字符流的桥梁,为了提高效率,可以在缓冲区中放入转化流的对象,,并且构造函数第二个参数可以传入一个指定字符编码

    读入键盘录入并打印控制台:

    InputStream is = System.in;
            BufferedReader bufr = null;
            InputStreamReader inr = null;
            try {
                inr = new InputStreamReader(is,"UTF-8");
                bufr = new BufferedReader(inr);
                String str = null;
                char []ch = new char[1024];
                while((str = bufr.readLine())!=null) {
                    System.out.println(str.toUpperCase());
                }
            }catch(IOException e) {
                e.printStackTrace();
            }catch(Exception e) {
                e.printStackTrace();
            }finally {
                try {
                    if(bufr!=null)bufr.close();
                    if(inr!=null)inr.close();
                }catch(IOException e) {
                    e.printStackTrace();
                }
                
            }

    效果如图

    OutPutStreamWriter是字符流通向字节流的桥梁:第二个参数同样可以指定一个字符编码

        FileOutputStream fos = null;
            OutputStreamWriter otw = null;
            BufferedWriter bufw = null;
            try {
                fos = new FileOutputStream("D:\xiaofei1.txt");
                otw = new OutputStreamWriter(fos,"UTF-8");
                bufw = new BufferedWriter(otw);
                bufw.write("我爱中国");
                bufw.flush();
                bufw.write("我是中国人");
            }catch(IOException e) {
                e.printStackTrace();
            }catch(Exception e) {
                e.printStackTrace();
            }finally {
                try {
                    if(bufw!=null)bufw.close();
                }catch(IOException e) {
                    e.printStackTrace();
                }
            }

    转换流可以指定字符编码,只有BufferedReader的ReaderLine()方法读到末尾的返回值是null,别的read()方法都是读到末尾返回-1,具体用哪个看后缀

    流操作的规律:

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

        2.明确体系后要明确具体的使用的对象

      1. 源设备:内存    硬盘   键盘  
      2. 目的设备:内存  硬盘   控制台   

    实例:将一个文本文件数据存储到另一个文件中:复制文件

      明确体系:

        源:文件---读取流------inputStream和Reader

        是否是纯文本:是------Reader

        目的:文件---写入流-------OutputOutputStream和Writer

        是否是纯文本:是:writer

      明确设备:

        源:Reader

        设备:硬盘上一个文件---子类对象:FileReader

          FileReader fr = new FileReader("D:xiaofei.txt");

        是否要提高效率:是-------加入Reader中的缓冲区:BufferedReader

          BufferedReader br = new BufferedReader(fr);

        目的:硬盘上的一个文件:子类对象:FileWriter

          FileWriter fw = new FileWriter("D:\xiaofei1.txt");

        是否要提高效率:是--------加入Writer缓冲区BufferedWriter

          BufferedWriter bufw = new BufferedWriter(fw);

    ----------看《毕向东java》笔记

  • 相关阅读:
    堆和栈的区别
    熟悉熟悉常用的几个算法用JS的实现
    JS设置CSS样式的几种方式
    javascript的基本语法、数据结构
    DOM的概念及子节点类型
    三列自适应布局
    Javascript中括号“[]”的多义性
    Javascript中大括号“{}”的多义性
    Javascript小括号“()”的多义性
    JavaScript 开发者经常忽略或误用的七个基础知识点
  • 原文地址:https://www.cnblogs.com/xiexiaofei/p/11645778.html
Copyright © 2020-2023  润新知