掌握OutputStreamWriter 和 InputStreamReader 类的作用
一般在操作输入输出内容的就需要使用字节或字符流,但是有些时候需要将字符流变为字节流的形式,或者将字节流变为字符流的形式,所以,就需要另外一组转换流的操作类。
在OutputStreamWriter 类中需要一个字节流的对象:public OutputStreamWriter(OutputStream out)
例如,将字节的文件输出流,以字符的形式输出。
import java.io.* ;
public class OutputStreamWriterDemo01{
public static void main(String args[]) throws Exception { // 所有异常抛出
File f = new File("d:" + File.separator + "test.txt") ;
Writer out = null ; // 字符输出流
out = new OutputStreamWriter(new FileOutputStream(f)) ; // 字节流变为字符流
out.write("hello world!!") ; // 使用字符流输出
out.close() ;
}
};
读的时候,也可以使用字符流的形式读取字节流的文件。
import java.io.* ;
public class InputStreamReaderDemo01{
public static void main(String args[]) throws Exception{
File f = new File("d:" + File.separator + "test.txt") ;
Reader reader = null ;
reader = new InputStreamReader(new FileInputStream(f)) ; // 将字节流变为字符流
char c[] = new char[1024] ;
int len = reader.read(c) ; // 读取
reader.close() ; // 关闭
System.out.println(new String(c,0,len)) ;
}
};
但是,以上只是以文件操作为例,因为OutputStreamWriter 中接收的类型是OutputStream , 只要是字节输出流都可以使用字符的形式操作,而InputStreamReader() 中接收的类型是InputStream ,只要是字节的输入流都可以使用字符的输入流操作。
总结:
1、一定要掌握两个转换类的作用
2、一定要明白,操作的终端点实际上都是以字节的形式进行的
3、FileWriter 和 FileReader 两个子类的字义,中间使用了转换类