IO之字节字符转换流
课程大纲
一、 转换流概述
1、 转换流可以将字节流转换为字符流,也可以将字符流转换为字节流。
2、 OutputStreamWriter:可以将输出的字符流转换为字节流的输出形式,
3、 InputStreamReader:可以将输入的字节流转换为字符流输入形式。
4、 所谓的输入输出流都是相对的概念,在Java中所有都是相对程序而言的。相对程序来说输出:是指往文件里写东西,输入:指的是读取文件里的东西。
二、 OutputStreamWriter
1、 Public class OutputStreamWriter extends Writer
2、 OutputStreamWriter是字符流通向字节流的桥梁,可以使用指定的charset将要写入流中的字符编码成字节,它使用的字符集可以有名称指定或者显示给定,否则将接受平台默认的字符集。
三、 InputStreamReader
1、 Public class InputStreamReader extends Reader
2、 InputStreamReader是字节流通向字符流的桥梁,它使用指定的charset将要写入流中的字符编码成字节,它使用的字符集可以有名称指定或者显示给定,否则将接受平台默认的字符集。
代码
package com.itheima.filedemo;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.lang.reflect.WildcardType;
import org.xml.sax.InputSource;
/**
* 所谓的输出流:是往文件里写东西的,文件本身里面没有内容,
* 所谓输入流:是读文件里面的内容的,文件本身里面必须有内容才能读啊。
* @author Administrator
*
*/
public class ConvertStreamDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
write();
read();
}
/**
* 使用转换流:把字符流转成为字节流输出(本文内容是字节)
*/
public static void write(){
try {
//构造一个字节输出流
OutputStream out = new FileOutputStream("E:\\2.txt");
//根据字节输出流对象构造一个字节输出流
Writer writer = new OutputStreamWriter(out);
String info = "山不在高,有仙则名,水不在深,有龙则灵!";
//写入文件
writer.write(info);
//关闭流
writer.close();
out.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 使用转换流:把字节流转换为字符流(文本内容是字节,读出来是字符才能读)
*/
public static void read(){
try {
//构造字节输入流对象
InputStream in = new FileInputStream("E:\\2.txt");
//根据字节输入流对象创建字符输入流
Reader reader = new InputStreamReader(in);
//每次读取512
char[] cs = new char[512];
int len = -1;
StringBuilder sb = new StringBuilder();
while ((len = reader.read(cs)) != -1) {
sb.append(new String(cs, 0, len));
}
//关闭
reader.close();
in.close();
//输出
System.out.println(sb);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}