IO流:转换流
OutputStreamWriter类:
public static void writeCN() throws Exception {
//创建与文件关联的字节输出流对象
FileOutputStream fos = new FileOutputStream("c:\\cn8.txt");
//创建可以把字符转成字节的转换流对象,并指定编码
OutputStreamWriter osw = new OutputStreamWriter(fos,"utf-8");
//调用转换流,把文字写出去,其实是写到转换流的缓冲区中
osw.write("你好");//写入缓冲区。
osw.close();
}
InputStreamReader类:
public class InputStreamReaderDemo {
public static void main(String[] args) throws IOException {
//演示字节转字符流的转换流
readCN();
}
public static void readCN() throws IOException{
//创建读取文件的字节流对象
InputStream in = new FileInputStream("c:\\cn8.txt");
//创建转换流对象
//InputStreamReader isr = new InputStreamReader(in);这样创建对象,会用本地默认码表读取,将会发生错误解码的错误
InputStreamReader isr = new InputStreamReader(in,"utf-8");
//使用转换流去读字节流中的字节
int ch = 0;
while((ch = isr.read())!=-1){
System.out.println((char)ch);
}
//关闭流
isr.close();
}
}
下面是一个转换流复制文件的小案例:
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public static void main(String[] args) throws IOException {
//获取目的地
FileOutputStream fos=new FileOutputStream("D:\\io1227\\gbk.txt");
//获取数据源
FileInputStream fis=new FileInputStream("D:\\IO1227\\utf8.txt");
//转换
OutputStreamWriter osw=new OutputStreamWriter(fos, "gbk");
InputStreamReader isr=new InputStreamReader(fis, "gbk");
int len=0;
while((len=isr.read())!=-1){
osw.write(len);
}
osw.close();
isr.close();
}
}
posted on 2020-04-22 10:38 煎饼果子不要果子谢谢 阅读(113) 评论(0) 编辑 收藏 举报