转换流读写操作 java.io.OutputStreamWriter ,java.io.InputStreamReader

package seday07;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;

/**
* @author xingsir
* 字符流
* java将流按照读写数据的单位画分为了两类:
字节流:以字节为单位读写数据,超类:InputStream,OutputStream
字符流:以字符为单位读写数据,超类:Reader,Writer
*
* 字符流底层实际还是按照字节形式读写,但是字符与字节的转换操作字符流自行完成。所以字符流只适合读写文本数据。
*
* 转换流
* java.io.OutputStreamWriter
* java.io.InputStreamReader
* 转换流是一对高级流,是可以连接在字节流上的字符流。实际应用中当我们读写文本数据时通常不会直接操作这对流,
但是他们在流连接中是非常重要的一环。
*/
public class OSWDemo {

public static void main(String[] args) throws IOException{
//先创建一个文件osw.txt

FileOutputStream fos=new FileOutputStream("osw.txt");//文件流写操作
/*
* 如果不指定第二个参数,则是按照系统默认字符集
* 将写出的文本数据转换为字节,指定后则按照指定 的字符集转换
*/
OutputStreamWriter osw =new OutputStreamWriter(fos,"gbk");//指定为gbk
osw.write("大河向东流");
osw.write("天上的星星参北斗");
osw.write("说走,咱就走");

System.out.println("写出完毕");
osw.close();

}

}

//============================================================================

package seday07;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;

/**
* @author xingsir
* 读取文本数据,InputStreamReader
*/
public class ISRDemo {

public static void main(String[] args) throws IOException{

FileInputStream fis =new FileInputStream("osw.txt");//文件流读操作
//读取文本数据
InputStreamReader isr =new InputStreamReader(fis);
//一次读取一个字符
int len=-1;
while ((len=isr.read())!=-1) {
System.out.print((char)len);//转换成char类型

}
isr.close();//关闭
}

}

原文地址:https://www.cnblogs.com/xingsir/p/12028892.html