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 转换流-字符编码
		编码和其产生的问题: 计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字.英文.标点符号.汉字等字符是二进制数转换之后的结果. 按照某种规则,将字符存储到计算机中,称为编码 .反之,将存 ... 
随机推荐
- delphicbuilder10_2_1 安装破解注册
			安装程序 1.解压delphicbuilder10_2_1.iso,以管理员身份运行..\delphicbuilder10_2_1\Install\Setup.exe——选择安装语言——点击OK(推荐 ... 
- java 模拟http请求,通过流(stream)的方式,发送json数据和文件
			发送端: /** * 以流的方式 * 发送文件和json对象 * * @return */ public static String doPostFileStreamAndJsonObj(String ... 
- Spring注解Component原理源码解析
			在实际开发中,我们经常使用Spring的@Component.@Service.@Repository以及 @Controller等注解来实现bean托管给Spring容器管理.Spring是怎么样实 ... 
- 19牛客暑期多校 round1 A 有关笛卡尔树的结论
			题目传送门//res tp nowcoder 分析 定理:B1~B2当且仅当B1与B2有同构的笛卡尔树. (B₁~B₂ iff B₁ and B₂ have isomorphic Cartesian ... 
- PAT B1048 数字加密 (20)
			AC代码 #include <cstdio> #include <cstring> #include <algorithm> #include <iostre ... 
- Replication-Manager
			MYSQL5.7下搭建Replication-Manager 环境说明 在主机1,主机2,主机3上安装MySQL服务端和客户端. 主机1 主机2 主机3 操作系统 CentOS7.4 CentOS7. ... 
- mysql之存储过程基础
			存储过程 procedure 可以理解为一个处理增删改,没有返回值得函数 创建存储过程的基本语法 create procedure 过程名 ([参数列表]) begin --过程体 end 存储过程主 ... 
- js循环遍历性能
			定length for循环 (有length) 不定length for循环(使用数组length) 不定length for循环(判断数组length是否存在) forEach(Array自带,对某 ... 
- pymssql文档(转)
			pymssql methods set_max_connections(number) -- Sets maximum number of simultaneous database connecti ... 
- clientHeight和offsetHeight
			clientHeight:包括padding但不包括border.水平滚动条.margin的元素的高度.对于inline的元素这个属性一直是0,单位px,只读元素. offsetHeight:包括pa ... 
