首页 > 代码库 > Java中使用FileputStream导致中文乱码问题的修改方案
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 }
转自 http://www.pocketdigi.com/20110805/436.html
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。