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 转换流-字符编码
编码和其产生的问题: 计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字.英文.标点符号.汉字等字符是二进制数转换之后的结果. 按照某种规则,将字符存储到计算机中,称为编码 .反之,将存 ...
随机推荐
- 【Python】【demo实验7】【练习实例】【完全平方数相关】
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. ...
- centOS重启网络服务报错
1:启动网卡报错(Failed to start LSB: Bring up/down networking )解决办法总结 将 NetworkManager关闭, systemctl stop Ne ...
- 小记--------spark资源调度机制源码分析-----Schedule
Master类位置所在:spark-core_2.11-2.1.0.jar的org.apache.spark.deploy.master下的Master类 /** * driver调度机制原理代码分析 ...
- spark-scala-java实现wordcount
引入:spark-scala-java实现wordcount 1.spark-scala实现wordcount package com.cw.scala.spark import org.apache ...
- C++多线程基础学习笔记(九)
一.std::atomic续谈 上一章说到std::atomic是针对一个变量的,这里补充一下针对的变量操作一般是++,+=,--,&=等等运算 .以下这种不可取:a=a+1; 二.std:: ...
- Remainder Problem(分块) Educational Codeforces Round 71 (Rated for Div. 2)
引用:https://blog.csdn.net/qq_41879343/article/details/100565031 下面代码写错了,注意要上面这种.查:2 800 0,下面代码就错了. ...
- 购物车以php原生cookie实现
index.php //入口文件 <?php /** * @name index.php * @decs * @author 老猫 <18368091722@163.com> * U ...
- 菜单ACTION控制栏位字段编辑,点击菜单ACTION才能编辑指定的栏位
范例(axmt500): 目的,控制新增的栏位(价格清单2),需点击菜单栏“修改价格清单2”才能对相应的栏位进行编辑修改,并记录修改人.日期: 1)在规格上增加新ACTION——action_modi ...
- hdu 1576
老生常谈的问题 利用同余的思想 抽象出表达式 bx+9973y=n 然后用bx+9973y=1(题目给出了gcd(b,9973)=1) 求出基础解 y0 bx+9973y=n 的 基础解y=n*y0 ...
- SQLite数据库_c/s架构的心得
1.使用是Navicat Premium软件, Microsoft Windows版本. 2.选择SQLite并新建数据库: 3.将建好的SQLite数据库,放到新建的项目的debug文件下中, 并在 ...