InputStreamReader类和OutputStreamWriter类
来源:互联网 发布:蓝月传奇龙魂升阶数据 编辑:程序博客网 时间:2024/05/19 18:10
这两个转换流,可以通过名称看出,这两个类的基类是字符流中的Reader和Writer,而他们的功能就如InputStream和OutputStream那样,读取的是字节和输出的是字节,这样就很好的理解InputStreamReader类和OutputStreamWriter类了,即InputStreamReader读取的是字节然后以一定的编码转换为字符,而OutputStreamWriter是以一定的编码将字符编码为字节后再输出。
InputStreamReader是字符“打包员”,把字节打包成字符; OutputStreamWriter是字符“拆包员”,把字符拆成字节。
1.InputStreamReader类
将读取的字节转换为字符
(1)InputStreamReader(InputStream in)
通过这个构造方法就可以看出 读取进来的是字节
(2)int read()方法
这个方法在InputStreamReader类中重写了,不再是直接输出一个字符拆分后的每个字节码了,而是返回的是一个字符
例:
public static void main(String[] args) throws IOException { InputStreamReader input = new InputStreamReader(System.in); int num = -1; while((num = input.read())!=-1){ //如:这里输入一个中文,虽然读取的是字节,但最后输出的也是这个中文,而不是这个中文拆分后的字节码 System.out.println((char)num); } input.close(); }
2.OutputStreamWriter类
将要写出的字符转换为字节,再写出
(1)void write(int c) 方法
因为是直接将字符转换为字节后再写出,所以这里的原数据为字符,在write()方法中会进行处理将传入的字符转换为字节后,再通过在构造方法时传入的OutputStream字节流对象将字节在写出
例:
public static void main(String[] args) throws IOException { FileReader reader = new FileReader("demo.txt");//读取字符 //字符--->字节 OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream("demo1.txt")); int num = -1; while((num = reader.read())!=-1){ out.write(num); } out.flush(); out.close(); }
2)write(char[] cbuf,int off,int len)和write(String str,int off,int len)
因为源数据为字符,所以这里可以是字符数组和字符串
例:
public static void main(String[] args) throws IOException { FileReader reader = new FileReader("demo.txt");//读取字符 //字符--->字节 OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream("demo1.txt")); out.write("jjj是空的"); out.flush(); out.close(); }
InputStreamReader和OutputStreamWriter的总结:
1. 在使用这两个类进行操作文件时,一定要明白操作的体系,如果是操作的是纯文本则使用字符流,否则使用字节流,如mp3使用的是字节流,而这里的InputStreamReader和OutputStreamWriter属于字符流体系,所以操作的是字符形式,而一般不操作字节形式的文件,因为编码可能不同
2.在使用这两个转换流时,一般都会结合BufferedReader和BufferedWriter使用。
例:
public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("demo.txt"))); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("demo1.txt"))); String str = null; while((str = reader.readLine())!=null){ writer.write(str); writer.newLine(); } reader.close(); writer.close(); }
- InputStreamReader类和OutputStreamWriter类
- InputStreamReader类和OutputStreamWriter类学习笔记
- 4.5.11.1 InputStreamReader 和OutputStreamWriter类
- 转换流----outputStreamWriter类和inputstreamReader
- IO之转换流-OutputStreamWriter类和InputStreamReader类
- InputStreamReader 和 OutputStreamWriter类用法简介,及演示。
- InputStreamReader 和 OutputStreamWriter类用法简介,及演示。
- InputStreamReader 和 OutputStreamWriter类用法简介,及演示。
- java-InputStreamReader 和 OutputStreamWriter类用法简介,及演示。
- InputStreamReader 和 OutputStreamWriter类用法简介,及演示。
- InputStreamReader 和 OutputStreamWriter类用法-实例讲解很好
- InputStreamReader和OutputStreamWriter
- InputStreamReader和OutputStreamWriter
- InputStreamReader 和 OutputStreamWriter
- InputStreamReader和OutputStreamWriter
- InputStreamReader和OutputStreamWriter
- Java InputStreamReader和OutputStreamWriter
- Java InputStreamReader 和 OutputStreamWriter
- 易簡)의 憂勞
- SQO2008配置管理工具服务显示远程过程调用失败
- sql2000版本
- 这个开源的里有extjs 图形化报表
- 网络编程
- InputStreamReader类和OutputStreamWriter类
- 基本数据结构和算法在Linux内核中使用
- RMI入门篇
- iOS7滑动返回
- 【机器学习-斯坦福】学习笔记10 K-means聚类算法
- Hadoop之Hbase数据库完全分布模式安装guide
- Sqrt(x)
- cp 复制文件
- XMPP 代理文件传输Socket 5协商过程