加载中…
个人资料
小白
小白
  • 博客等级:
  • 博客积分:0
  • 博客访问:12,462
  • 关注人气:367
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Java指定编码读写文件

(2012-01-04 09:23:35)
标签:

杂谈

分类: java

受益良多!3q~

 

转自http://danwind.javaeye.com/blog/514235

 

关键字: 读写文件乱码问题

1.读文件
当时为了数据的可移植性我放弃了使用数据库,将全部数据保存为UTF-8编码的文
本文件,在.net中读取这种文件秩序只要指定打开文件的编码方式,中文问题就可
以避免。但是按照我以前的思维,java中不是这么作的,java中都是先读取后转换
的,最后的结果证明我错了,看来经验主意害死人呀。
Java代码
File f=new File((new    BoxConfig()).getBaseDir()+"Data\\"+request.getParameter("ID")+".inc");   BufferedReader reader new BufferedReader(new FileReader(f));   String line;   while((line=reader.readLine())!=null){     strContent+=line;    
File f=new File((new BoxConfig()).getBaseDir()+"Data\\"+request.getParameter("ID")+".inc"); BufferedReader reader = new BufferedReader(new FileReader(f));String line; while((line=reader.readLine())!=null){ strContent+=line; }这是我最初的代码f就是我要读取的UTF-8格式的文本文件,这一天中经过了无数次
的尝试,包括new String(strContent.getBytes("UTF-8"))(其中尝试了N种编码转
换),System.setProperty("file.encoding","UTF-8")(其中指定了N种编码转换
),都失败了。终于在Google中无数次查询中得到了一个后来被证明很重要的一条
信息“读取文件时指定字符编码”,一语点醒梦中人,.net中不就是这么实现的吗?
走了一圈弯路终于解决了这个问题。
Java代码
File new File("E:\\eclipse\\workspace\\box\\Data\\2003-3-7-100.inc"); 
  InputStreamReader read new InputStreamReader (new FileInputStream(f),"UTF-8"); 
  BufferedReader reader=new BufferedReader(read); 
  String line;  
 while ((line reader.readLine()) != null
{   System.out.println(line);    
File f = new File("E:\\eclipse\\workspace\\box\\Data\\2003-3-7-100.inc");
InputStreamReader read = new InputStreamReader (new FileInputStream(f),"UTF-8");
BufferedReader reader=new BufferedReader(read);String line; while ((line = reader.readLine()) != null)
{System.out.println(line);
}通过打开文件是指定文件编码的方法把这个问题轻松的解决了。
最后总结一下:java要读取数据流的时候一定要指定数据流的编码方式(至少读取
String流的时候要这么作。

2.写文件
File file = new File("c:\a.test");
Writer writer = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
writer.write("中文测试");
writer.close();

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有