转换流(OutputStreamWriter 和 InputStreamReader )
2017-08-16 20:17
281 查看
1 . 转换流操作的是文件字节流,则创建转换流对象的时候,构造参数写文件字节流对象.
2 .InputStreamReader是从字节流到字符流的桥 .
本来文件字节流(即FileInputStream)读取数据是按照字节读取的,则定义byte类型的数组可用来存放.写入数据的时候也是先从byte数组中读数据,再写入文件中.
本来文件字符流(即FileReade)读取数据是按照字符读取的,则定义 char类型的数组可用来存放.写入数据的时候也是可以先从char组中读数据,再写入文件中.
现在,使用InputStreamReader读取的数据可直接放入char数组.看代码
3 .
4 . 总结:
转换流的优点:
将字节–> 字符 提高执行效率
将字符–> 字节 能够操作 各种类型的 文件
另外一个优点: 可以解决乱码问题(不包括对象)
2 .InputStreamReader是从字节流到字符流的桥 .
本来文件字节流(即FileInputStream)读取数据是按照字节读取的,则定义byte类型的数组可用来存放.写入数据的时候也是先从byte数组中读数据,再写入文件中.
本来文件字符流(即FileReade)读取数据是按照字符读取的,则定义 char类型的数组可用来存放.写入数据的时候也是可以先从char组中读数据,再写入文件中.
现在,使用InputStreamReader读取的数据可直接放入char数组.看代码
package com.qf.demo5; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; /** * * @author Administrator * */ public class Test { public static void main(String[] args) { InputStreamReader isr =null; try { isr =new InputStreamReader(new FileInputStream(new File("abc.txt"))); //将读取的数据存入char数组中 char[] cbuf = new char[20]; int num = 0; while((num = isr.read(cbuf))!=-1){ System.out.println(Arrays.toString(cbuf)); System.out.println(num); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { if(isr!=null){ try { isr.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }
3 .
package com.qf.demo5; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; /** * 转换流的优点: * 将字节--> 字符 提高执行效率 * 将字符--> 字节 能够操作 各种类型的 文件 另外一个优点: 可以解决乱码问题(不包括对象) */ public class Test2 { public static void main(String[] args) { try { OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(new File("cc.txt"))); //这里写入的是字符串 osw.write("hehehehehe"); osw.flush(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
4 . 总结:
转换流的优点:
将字节–> 字符 提高执行效率
将字符–> 字节 能够操作 各种类型的 文件
另外一个优点: 可以解决乱码问题(不包括对象)
相关文章推荐
- 转换流--InputStreamReader ,OutputStreamWriter
- 黑马程序员_读取键盘录入和转换流(InputStreamReader类和OutputStreamWriter类)
- 转换流的使用(InputStreamReader,OutputStreamWriter)
- 转换流的使用(InputStreamReader,OutputStreamWriter)
- 转换流(InputStreamReader和OutputStreamWrite )
- 转换流(OutputStreamWriter,InputStreamReader)
- 黑马程序员_<<转换流(InputStreamReader,OutputStreamWriter)>>
- Java IO流->处理流->转换流:InputStreamReader&OutputStreamWriter
- 黑马程序员——java基础 io 转换流的应用(InputStreamReader,OutputStreamWriter)
- InputStream、InputStreamReader和Reader的关系
- 【Java基础】InputStream 、 InputStreamReader和BufferedReader
- InputStreamReader和BufferedReader用法
- java.io.Reader 和 java.io.InputStream 的区别
- I/O流之--转换流:InputStreamReader 和InputStreamWriter
- java BufferedReader和InputStreamReader的区别
- Java IO InputStreamReader和OutputStreamWriter
- InputStream 、 InputStreamReader 、 BufferedR 4000 eader
- InputStream、InputStreamReader和Reader的关系
- 解决request.getParameter() 、 request.getInputStream()和request.getReader()只能使用一次的问题
- request.getParameter()、request.getInputStream()和request.getReader()