不管是用字节流还是字符流,都可以轻松的进行文件读取。当然,它们对乱码问题的处理方式是不同的。
1. 字节流
/**
* @param args
*/
public static void main(String[] args) {
try {
InputStream in = new BufferedInputStream(new FileInputStream("D:/temp/a.txt"));
int c;
StringBuffer sb = new StringBuffer();
while ((c = in.read())>0){
sb.append((char)c);
}
String response = new String(sb.toString().getBytes("iso-8859-1"), "gb2312");
System.out.print(response);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
处理方法:对读取到的文件内容进行字符编码转换
2. 字符流
/**
* Read file's content
*
* @param fileAndPath String the file and path
* @return String the file's content
*/
public static String readFile (String fileAndPath) {
String fileContent = "";
File file = new File(fileAndPath);
if (file.isFile() && file.exists()) {
try {
InputStreamReader in = new InputStreamReader(new FileInputStream(file), "gb2312");
BufferedReader bf = new BufferedReader(in);
String temp;
while ((temp=bf.readLine()) !=null) {
fileContent += temp+"\n";
}
bf.close();
in.close();
}catch (FileNotFoundException e) {
System.out.println("File not found");
e.printStackTrace();
} catch (IOException e) {
System.out.println("Something wrong when reading file");
e.printStackTrace();
}
}
return fileContent;
}
处理方法: 读取文件时,用字符流类InputStreamReader进行编码转换
3. Linux 平台下
暂时没有碰到这样的问题。但是据说在Linux平台下,用字符流读取会有乱码问题。
-----------------------------------------------------
项目中要求读取数据文件通过java程序导入数据库,数据文件是ANSI编码格式的,在windows环境中没有什么问题,windows会自动将编码转换成为gb2312的,但是在linux平台上由于多语言,使用InputStreamReader由字节码转换为字符码的时候会容易产生无法正确转换的乱码,解决方法为读取的时候采用iso-8859-1格式读取,在程序中再次转码。
BufferedReader reader = new BufferedReader(new InputStreamReader(
new FileInputStream(filename),"iso-8859-1"));
String line = reader.readLine();
line = new String("iso-8859-1","gb2312");
版权声明:本文为CSDN博主「weixin_33834910」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_33834910/article/details/92028592
原文链接:https://blog.csdn.net/weixin_33834910/article/details/92028592
更多相关推荐
Java IO 读取文件中的乱码问题
不管是用字节流还是字符流,都可以轻松的进行文件读取。当然,它们对乱码问题的处理方式是不同的。1.字节流Java代码/** * @param args */ public static void main(String[] args) { try {...
JAVA中中文乱码问题
2019独角兽企业重金招聘Python工程师标准>>>一, Java源文件中很可能包含中文,而Java和JSP源文件保存的方式是基于字节流的。如果Java或JSP编译成class文件过程中,使用的编码方式和源码方式不一致,则会出现乱码...
Java文件读取 中文乱码
1 字节流以及编码转换说明Stringstr="中";byte[]b_gbk=str.getBytes("GBK");byte[]b_utf8=str.getBytes("UTF-8");Strings_gbk=newString(b_gbk,"GBK");Strings_utf8=newString(b_utf8,"UTF-8");System.out.println(s...
利用JAVA IO 解决乱码的问题
前一段时间做一个法国的项目,其中有一个数据同步的问题,客户给我们他们从自己数据库导出的xml格式的数据,我在这边写了一个定时程序,定期检测文件是否更新,并同步xml格式的数据到我们这边的数据库中。当时自己...
在使用java io流读取文件时的乱码问题
publicvoidinit()throwsServletException{ //初始化阶段,读取new_words.txt //web工程中读取文件,必须使用绝对磁盘路径 Stringpath=getServletContext().getRealPath("/WEB-INF/new_words.txt"); try{ BufferedRea...