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.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Work01 {
 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();
 }
}

猜你喜欢

转载自www.cnblogs.com/nbkls/p/12750421.html