Java IO(十六)InputStreamReader 和 InputStreamWriter

一、介绍

InputStreamReader 和 OutputStreamWriter 是字节流通向字符流的桥梁:它使用指定的 charset 读写字节并将其解码为字符。如果不指定字符集编码,该解码过程将使用平台默认的字符编码,如:GBK。

  • InputStreamReader:字节字符转换输入流,继承于 Reader,它的的作用是将字节输入流转换成字符输入流。
  • OutputStreamWriter :字节字符转换输出流,继承于 Writer,它的的作用是将字节输出流转换成字符输出流。

二、构造方法

(一)、InputStreamReader

(二)、InputStreamWriter

三、常用API

(一)、InputStreamReader

(二)、InputStreamWriter

四、实例

public class Demo {
private static char[] chs = new char[]
{'a','b','c','d','e','f','g','h','i','j','k','l','m',
'n','o','p','q','r','s','t','u','v','w','x','y','z'};
public static void main(String[] args) {
write();
read();
}
/**
* OutputStreamWriter 测试
*/
public static void write() {
OutputStreamWriter out = null;
try {
out = new OutputStreamWriter(new FileOutputStream(new File("demo.txt")));
out.write(chs);// 写入字符数组
out.write('A');// 写入字符A
out.write("0123456789");// 写入字符串
out.write(chs, 10, 10);// 写入字符数组的一部分
String str = new String(chs).toUpperCase();// 将字符数组转成字符串并大写
out.write(str, 0, 10);// 写入字符串的一部分
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(out != null)
out.close();
}catch(Exception e) {
e.printStackTrace();
}
}
}
/**
* InputStreamReader 测试
*/
public static void read() {
InputStreamReader in = null;
char[] buff = new char[20];
int len = 0;
try {
in = new InputStreamReader(new FileInputStream(new File("demo.txt")));
for(int i = 0;i < 5;i++) {
if(in.ready())
System.out.println("read() : " + (char)in.read());// 读取一个字符
}
len = in.read(buff, 0, 10);// 读取字符一部分
System.out.println("read(buff, 0, 10) : " + new String(buff,0,len));
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(in != null)
in.close();
}catch(Exception e) {
e.printStackTrace();
}
}
}
}

Java IO(十六)InputStreamReader 和 InputStreamWriter的更多相关文章

  1. 系统学习 Java IO (十六)----这么多类,应该用哪个?

    目录:系统学习 Java IO---- 目录,概览 Java IO目的和功能 Java IO 包含 InputStream,OutputStream,Reader 和 Writer 类的许多子类. 原 ...

  2. “全栈2019”Java第九十六章:抽象局部内部类详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  3. “全栈2019”Java第二十六章:流程控制语句中循环语句do-while

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  4. “全栈2019”Java第十六章:下划线在数字中的意义

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  5. Java IO(六) ObjectInputStream 和 ObjectOutputStream

    Java IO(六) ObjectInputStream 和 ObjectOutputStream 一.介绍 对于对象数据的处理,Java IO 提供了 ObjectInputStream 和 Obj ...

  6. Java提高十六:TreeMap深入分析

    上一篇容器元素比较Comparable&Comparator分析的时候,我们提到了TreeMap,但没有去细致分析它,只是说明其在添加元素的时候可以进行比较,从而使得集合有序,但是怎么做的呢? ...

  7. 系统学习 Java IO (十二)----数据流和对象流

    目录:系统学习 Java IO---- 目录,概览 DataInputStream/DataOutputStream 允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型. 要想使用 ...

  8. 系统学习 Java IO (十四)----字符读写缓存和回退 BufferedReader/BufferedWriter & PushbackReader

    目录:系统学习 Java IO---- 目录,概览 BufferedReader BufferedReader 类构造器接收一个 Reader 对象,为 Reader 实例提供缓冲. 缓冲可以加快 I ...

  9. Java进阶(十六)使用new Date()和System.currentTimeMillis()获取当前时间戳

    java使用new Date()和System.currentTimeMillis()获取当前时间戳 在开发过程中,通常很多人都习惯使用new Date()来获取当前时间,使用起来也比较方便,同时还可 ...

  10. 学JAVA第十六 天,JAVA多态

    今天老师讲了多态的使用 多态是同一个行为具有多个不同表现形式或形态的能力. 多态的优点: 1. 消除类型之间的耦合关系 2. 可替换性  3. 可扩充性 4. 接口性 5. 灵活性 6. 简化性 我个 ...

随机推荐

  1. 3) drf 框架生命周期 请求模块 渲染模块 解析模块 自定义异常模块 响应模块(以及二次封装)

    一.DRF框架 1.安装 pip3 install djangorestframework 2.drf框架规矩的封装风格 按功能封装,drf下按不同功能不同文件,使用不同功能导入不同文件 from r ...

  2. Android 10 获取已连接上的蓝牙设备的当前电量

    前言 最近的项目中有获取连接蓝牙设备电量的需求,查找了一些资料,发现谷歌在Android8.0推出了一个getBatteryLevel的api,用来获取蓝牙设备电量百分比的方法,但在我的项目中andr ...

  3. Fibonacci相关问题

    公式如下: 递归的解法我就不写了,贴一个递推的. long long Fibonacci(unsigned int n) { ) ; ) ; ; ; long long res; ; i <= ...

  4. 【python】numpy库和matplotlib库学习笔记

    Numpy库 numpy:科学计算包,支持N维数组运算.处理大型矩阵.成熟的广播函数库.矢量运算.线性代数.傅里叶变换.随机数生成,并可与C++/Fortran语言无缝结合.树莓派Python v3默 ...

  5. P3467(矩形覆盖问题)

    描述:https://www.luogu.com.cn/problem/P3467 1.考虑如果整个建筑物链是等高的,一张高为链高,宽为整个建筑物宽的海报即可完全覆盖: 2.若有两个不等高的元素组成建 ...

  6. Pycharm修改HTML模板

  7. HC32F003C4PA GPIO Output

    1.打开启动文件,找到并跳转至SystemInit函数 void SystemInit(void) { stc_clk_systickcfg_t stcCfg; // TODO load trim f ...

  8. [hdu4768]二分

    http://acm.hdu.edu.cn/showproblem.php?pid=4768 题意:n个传单分别发给编号为ai, ai + ci, ai + 2 * ci, .. , ai + k * ...

  9. [csu/coj 1619] 递归

    题意:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1619 思路:由于式子具有递归的性质,考虑递归解,中间结果会超64位int,需用大数.另外自己 ...

  10. HDU 2016 (水)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2016 题目大意:给你 n 个数,把最小的数和第一个数字互换,然后输出 解题思路: 很水,开数组,遍历并 ...