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,具体用哪个看后缀
流操作的规律:
- 明确源和目的
- 源:输入流 InputStream Reader
- 目的:输出流 OutputStream Writer
- 操作的数据是否是纯文本
- 是:字符流
- 不是:字节流
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—转换流和键盘录入的更多相关文章
- Java IO 转换流 字节转字符流
Java IO 转换流 字节转字符流 @author ixenos 字节流 输入字节流:---------| InputStream 所有输入字节流的基类. 抽象类.------------| Fil ...
- IO 转换流
package TestIo; import java.io.*; /** * 转换流 */ public class TestConvertStream { public static void m ...
- Java基础---Java---IO流-----读取键盘录入、InputStreamReader、转换流、OutputStreamWriter、InputStreamReader
字符流: FileReader FileWriter BufferedReader BufferedWriter 字节流: FileInputStream FileOutputStream Buffe ...
- IO流(1)-键盘录入学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件
1.先写一个Student类 public class Student { private String name; private int chinese; private int math; pr ...
- Java之IO转换流
直接上码: 读取键盘录入数据代码演示: import java.io.IOException; import java.io.InputStream; /** *读取键盘录入的数据,并打印在控 ...
- [Day24]IO(转换流、缓冲流)
1. 转换流 1.1 OutputStreamWriter类-字符流通向字节流的桥梁,可使用指定的字符编码表,将要写入流中的字符编码成字节. 1.2 InputStreamReader类-字节流通向字 ...
- 15、IO (转换流、缓冲流)
转换流概述 * A: 转换流概述 * a: 转换流概述 * OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流中的字符编码成字节 * 将字符串按照指定的 ...
- 【转载】Java IO 转换流 字节转字符流
字节流输入字节流:---------| InputStream 所有输入字节流的基类. 抽象类.------------| FileInputStream 读取文件的输入字节流.----------- ...
- java 输入输出IO 转换流-字符编码
编码和其产生的问题: 计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字.英文.标点符号.汉字等字符是二进制数转换之后的结果. 按照某种规则,将字符存储到计算机中,称为编码 .反之,将存 ...
随机推荐
- [转帖]IP地址和CIDR
IP地址和CIDR https://www.cnblogs.com/cocowool/p/8303795.html 感谢原作者 自己竟然忘记了 classless inter-domain route ...
- Java MyBatis逆向工程,自动生成pojo,mapper
生成xml文件,文件名generator.xml <?xml version="1.0" encoding="UTF-8"?><!DOCTYP ...
- redis 发布订阅、geo、bitmap、hyperloglog
1.发布订阅 简介 发布订阅类似于广播功能.redis发布订阅包括 发布者.订阅者.Channel 命令 命令 作用 时间复杂度 subscribe channel 订阅一个频道 O(n) unsub ...
- Oracle解决空表不导出
Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 or num_rows ...
- go语言开启go module
export GO111MODULE=on //linux .MAC set GO111MODULE=on //Windows
- 19牛客暑期多校 round1 A 有关笛卡尔树的结论
题目传送门//res tp nowcoder 分析 定理:B1~B2当且仅当B1与B2有同构的笛卡尔树. (B₁~B₂ iff B₁ and B₂ have isomorphic Cartesian ...
- VC++2017关于项目出现"const char *" 类型的实参与 "char *" 类型的形参不兼容错误的解决方法
C++项目中经常会定义如下形式的字符串: char *texts[] = { "1. Open Account", "2. To Deposit Money", ...
- Django-choices字段值对应关系(性别)-MTV与MVC科普-Ajax发json格式与文件格式数据-contentType格式-Ajax搭配sweetalert实现删除确认弹窗-自定义分页器-批量插入-07
目录 models 字段补充 choices 参数/字段(用的很多) MTV与MVC模型 科普 Ajax 发送 GET.POST 请求的几种常见方式 用 Ajax 做一个小案例 准备工作 动手用 Aj ...
- 怎样理解 Vue 组件中 data 必须为函数 ?
组件意在 复用 , 若为 对象, 则会相互干扰. 且 Vue 不允许此事发生, 规定必须为函数, 否则报错. 原理如下 对象 // 模拟创建组件 var Component= function() { ...
- webpack配置不同打包配置
生成环境与开发环境打包配置 使用package.json配置npm run开启不同的打包配置 ...webpack基本使用最后一篇博客 在上一篇博客中详细的演示了webpack开启本地服务和热更新,这 ...