博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FileReader乱码
阅读量:5264 次
发布时间:2019-06-14

本文共 1631 字,大约阅读时间需要 5 分钟。

出现原因:FileReader读取文件的过程中,FileReader继承了InputStreamReader,但并没有实现父类中带字符集参数的构造函数,所以FileReader只能按系统默认的字符集来解码,然后在UTF-8 -> GBK -> UTF-8的过程中编码出现损失,造成结果不能还原最初的字符。

/** * 获得文件内容 * @param file * @return*/public String getFileContent(File file){				InputStreamReader reader = null;		StringBuffer result = new StringBuffer();		try {			reader = new InputStreamReader(new FileInputStream(file),"gbk");						int ch = reader.read();			while(ch != -1){				result.append((char)ch);				ch = reader.read();			}			reader.close();		} catch (Exception e) {			e.printStackTrace();			reader = null;		}		return result.toString();	}

 FileReader和FileWriter的使用:可用于己知输入编码和输出编码情况下:

public List
getFileContent(){ List
list = new ArrayList
(); File f = null; BufferedReader buff = null; BufferedWriter out = null; StringBuffer buffer = new StringBuffer(); try { f = new File("resource/domain0108.csv"); buff = new BufferedWriter(new FileWriter(f)); String temp = buff.readLine(); while(true){ if(temp == null){ break; } /*byte[] bb = temp.getBytes("utf-8"); temp = new String(bb,"gbk");*/ list.add(temp + "\r\n"); buffer.append(temp + "\r\n"); temp = buff.readLine(); } System.out.println("InfoPorcesser.getFileContent返回文件内容列表成功"+list.size()); out.write(buffer.toString()); out.flush(); out.close(); buff.close(); } catch (Exception e) { e.printStackTrace(); buff = null; } return list; }

 

转载于:https://www.cnblogs.com/liuyq/p/4217837.html

你可能感兴趣的文章
Bootstrap基础
查看>>
Javascript: 从prototype漫谈到继承(1)
查看>>
POJ 3974 Palindrome | 马拉车模板
查看>>
oracle表关联update和表建立索引
查看>>
JVM运行内存分类
查看>>
【学习】博弈相关:Nim
查看>>
BZOJ4552 HEOI/TJOI2016 排序 线段树、二分答案
查看>>
13. 用Roberts、Sobel、Prewitt和Laplace算子对一幅灰度图像进行边缘检测。观察异同。...
查看>>
winform采用POST上传指定文件,并获取返回值
查看>>
一、Qt Creator的安装和hello world程序的编写
查看>>
C/C++ 关于大小端模式
查看>>
VueJs2.0建议学习路线
查看>>
An Algorithm
查看>>
导出Excel的几种方法
查看>>
赋值表达式也有值
查看>>
2013年下半年软件评測师(下午)试题分析与解答
查看>>
第一个项目--用bootstrap实现美工设计的首页
查看>>
线程概述
查看>>
struts的增删改查
查看>>
通过名称找到控件(VB.NET)
查看>>