Java中使用FileputStream导致中文乱码问题的修改方案
1 package com.pocketdigi; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.io.InputStreamReader; 8 import java.io.OutputStreamWriter; 9 10 public class Main { 11 12 public static void main(String[] args) throws IOException { 13 File f = new File("d:/a.txt"); 14 FileOutputStream fop = new FileOutputStream(f); 15 // 构建FileOutputStream对象,文件不存在会自动新建 16 OutputStreamWriter writer = new OutputStreamWriter(fop, "UTF-8"); 17 // 构建OutputStreamWriter对象,参数可以指定编码,默认为操作系统默认编码,windows上是gbk 18 writer.append("中文输入"); 19 // 写入到缓冲区 20 writer.append("\r\n"); 21 // //换行 22 writer.append("English"); 23 // writer.flush(); 24 // 刷新缓存冲,写入到文件,如果下面已经没有写入的内容了,直接close也会写入 25 writer.close(); 26 //关闭写入流,同时会把缓冲区内容写入文件,所以上面的注释掉 27 fop.close(); 28 // 关闭输出流,释放系统资源 29 30 FileInputStream fip = new FileInputStream(f); 31 // 构建FileInputStream对象 32 InputStreamReader reader = new InputStreamReader(fip, "UTF-8"); 33 // 构建InputStreamReader对象,编码与写入相同 34 35 StringBuffer sb = new StringBuffer(); 36 while (reader.ready()) { 37 sb.append((char) reader.read()); 38 // 转成char加到StringBuffer对象中 39 } 40 System.out.println(sb.toString()); 41 reader.close(); 42 // 关闭读取流 43 fip.close(); 44 // 关闭输入流,释放系统资源 45 46 } 47 }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。