1、前言:InputStreamReader 、OutputStreamWriter:
附:读入时产生乱码的缘由:java
一、
当前工程字符集与 源头文件内容的 字符集不符合!二、
在读取时,假如用read()一个一个字符(char)的读取,char占2个字节(Java采用Unicode)三、
注:1.编码与中文: 四、
在UTF-8下,读取中文字符,意味着读一个中文,只能读它的2/3 !2、应用场景:
System.in
是字节流对象,表明键盘的输入。BufferedReader
特有的方法readline()
, 可是发现 BufferedReader
的构造函数的参数是一个 Reader
对象,此时转换流就派上用场了!import java.io.*; public class IO_putStream_RW { public static void main(String[] args) { /*(1)、建立源:源头就是用户输入的字符吧!*/ /*(2)、选择流:*/ try (BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); BufferedReader br = new BufferedReader(new InputStreamReader(System.in, "UTF-8"))) { // 使用字符输入和输出流 String str = br.readLine(); while ("exit".equals(str)){ //字符串内置的equals()比较的是字符串的"内容" //写到控制台 bw.write(str); //换行 bw.newLine(); //刷新 bw.flush(); //有关flush()的做用:`http://sfau.lt/b5bu777 //继续读 str = br.readLine(); } } catch (IOException e){ e.printStackTrace(); } } }
3、总结:IO流的操做都离不开"四大步骤"
一、
建立源二、
选择流三、
系列操做四、
关闭流函数
try (try...with--resource)
已经帮咱们省了不少功夫 若是想规范一下本身的代码,推荐手写!)