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

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》笔记

IO—转换流和键盘录入的更多相关文章

  1. Java IO 转换流 字节转字符流

    Java IO 转换流 字节转字符流 @author ixenos 字节流 输入字节流:---------| InputStream 所有输入字节流的基类. 抽象类.------------| Fil ...

  2. IO 转换流

    package TestIo; import java.io.*; /** * 转换流 */ public class TestConvertStream { public static void m ...

  3. Java基础---Java---IO流-----读取键盘录入、InputStreamReader、转换流、OutputStreamWriter、InputStreamReader

    字符流: FileReader FileWriter BufferedReader BufferedWriter 字节流: FileInputStream FileOutputStream Buffe ...

  4. IO流(1)-键盘录入学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件

    1.先写一个Student类 public class Student { private String name; private int chinese; private int math; pr ...

  5. Java之IO转换流

    直接上码:   读取键盘录入数据代码演示:   import java.io.IOException; import java.io.InputStream; /** *读取键盘录入的数据,并打印在控 ...

  6. [Day24]IO(转换流、缓冲流)

    1. 转换流 1.1 OutputStreamWriter类-字符流通向字节流的桥梁,可使用指定的字符编码表,将要写入流中的字符编码成字节. 1.2 InputStreamReader类-字节流通向字 ...

  7. 15、IO (转换流、缓冲流)

    转换流概述 * A: 转换流概述 * a: 转换流概述 * OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流中的字符编码成字节 * 将字符串按照指定的 ...

  8. 【转载】Java IO 转换流 字节转字符流

    字节流输入字节流:---------| InputStream 所有输入字节流的基类. 抽象类.------------| FileInputStream 读取文件的输入字节流.----------- ...

  9. java 输入输出IO 转换流-字符编码

    编码和其产生的问题: 计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字.英文.标点符号.汉字等字符是二进制数转换之后的结果. 按照某种规则,将字符存储到计算机中,称为编码 .反之,将存 ...

随机推荐

  1. markdown中使用缩进

    在markdown中直接敲空格是不生效的. 使用html标签来实现 一个空格大小的表示:  两个空格的大小表示:  不换行空格:  别忘记分号 参考了大神的文章: markdown空格缩进以及HTML ...

  2. PyCharm 格式化代码 常用快捷键

    ctrl+alt+L 一 常用快捷键 编辑类:Ctrl + D             复制选定的区域或行Ctrl + Y           删除选定的行Ctrl + Alt + L     代码格 ...

  3. drf-更新四大接口-单改整体-单改局部-群改整体-群改局部-04

    目录 复习 基于前一天序列化基础 整体单改 单与整体局部修改 复习 """ 1.ModelSerializer序列化类 models.py class BaseModel ...

  4. C/S软件方案

    互联网时代客户端软件的一些方案 纯Native开发, C++/C#/duilib+C++(Windows), Objective-c(Mac) Qt(Windows/Mac) NW.js/Electr ...

  5. 向量运算(lua,三维) 点乘、叉乘、模、夹角

    向量运算在游戏制作中经常用到,稍微总结一下. 一.点乘 如图,假设   向量a与b的点乘表示a在b上的投影与b的模的乘积 公式: 代码: function MathHelper.GetVector3D ...

  6. 【spring Boot】spring boot1.5以上版本@ConfigurationProperties取消location注解后的替代方案

    前言 =========================================== 初步接触Spring Boot ===================================== ...

  7. 02docker核心概念

    1:docker三大核心概念 核心概念 描述 镜像 Docker镜像类似于虚拟机镜像,可以将它理解为一个只读的模板. 容器 Docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用 ...

  8. Fox新闻报道,帮助北朝鲜使用加密货币专家被捕

    根据司法部的刑事诉讼,一名美国加密货币专家周四在洛杉矶被捕,原因是涉嫌帮助朝鲜使用加密货币逃避美国的制裁.网民都说敢帮助敌人,就应该关起来.  ​​​

  9. JavaScript使用纯函数避免bug

    纯函数 一.纯函数 定义:纯函数是指不依赖并且不修改其作用域之外的函数.通过以下几个示例来认识纯函数: var a = 10; //纯函数 function foo(num){ return num ...

  10. 如何使用koa搭建一个简单服务

    1.首先检测是否已经有node环境?   把Windows的黑窗体的命令行工具调用出来   敲击命令行node -v , 然后,就可以看到这个打印出了一个版本号,这就证明我们的node.js已经是安装 ...