JAVA中转换流InputStream和OutputStream解决复制文本文件出现乱码的问题

JAVA中转换流InputStream和OutputStream设置编码方式

1、基本思路:将字符流中FileReader和FileWriter换成其父类(转换流)

2、代码实现:

    import java.io.File;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;

public class 转换流 {

public static void main(String[] args) {
	// TODO Auto-generated method stub

	// TODO Auto-generated method stub
    System.out.println(System.getProperty("file.encoding"));//可以显示默认的编码方式
	Reader reader=null;
	Writer writer=null;
	try {
		//输入流将文本文件从D盘输入到内存
		reader=new InputStreamReader(new FileInputStream(new File("D:\\蓝桥.txt")),"UTF-8");//设置编码方式即可
		//输出流将文本文件从内存输出到E盘
		writer=new OutputStreamWriter(new FileOutputStream(new File("D:\\蓝桥33.txt")),"UTF-8");
		/*
		 * 接下来需要一个字符一个字符的去读,Java中的处理机制会将文件的 的每一个字符转化成字节,再转化成一个int型的数字。
		 */
		char[] c=new char[100];
		while(true) {
		 int i=	reader.read(c);
         //当这个int型数字变为-1的时候,表明读取结束			 
			if(i==-1) {
				break;
			}
			System.out.println(new String(c));
			//读完以后就开始往里面写了
			writer.write(c,0,i);
		}
	} catch (FileNotFoundException e) {
		System.out.println("你输入的文件路径是错误的!");
		e.printStackTrace();
	} catch (IOException e) {
		System.out.println("读取异常!");
		e.printStackTrace();
	}
	//使用完IO流之后一定要关闭,可以使用finally类去关闭
    finally {
   	 if(reader!=null) {
   		 try {
			reader.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
   	 }
   	if(writer!=null) {
		try {
			writer.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	  }
    }
 

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值