在用Java程序进行读写含中文的txt文件时,经常会出现读出或写入的内容会出现乱码。原因其实很简单,就是系统的编码和程序的编码采用了不同的编码格式。通常,假如自己不修改的话,windows自身采用的编码格式是gbk(而gbk和gb2312基本上是一样的编码方式),而IDE中Encode不修改的话,默认是utf-8的编码,这就是为什么会出现乱码的原因。当在OS下手工创建并写入的txt文件(gbk),用程序直接去读(utf-8),就会乱码。为了避免可能的中文乱码问题,最好在文件写入和读出的时候显式指定编码格式。

可以观察其实windows下的记事本的默认的格式是ANSI,查看方式就是创建一个新的文本文件然后点击另存为

在简体中文Windows操作系统中,ANSI

编码代表 GBK 编码,所以win系统的编码方式是gbk,不可以用utf-8去读,

在Java中,如果我们用java.io.FileReader或者java.io.FileWriter来读写文件的话,固然我们可以通过 java.io.BufferedReader和java.io.BufferedWriter来提高效率,但是我们会发现在FileReader和 FileWriter中我们只能获取编码方式,而不能设置。这样,在FileReader和FileWriter中的编码设置只能服从于一些更为底层的设置,那么在读写多种语言编码的文件时就很容易出现乱码。

另外一种方法就是采用java.io.FileInputStream/java.io.InputStreamReader和 java.io.FileOutputStream/java.io.OutputStreamWriter来解决这个问题。在 InputStreamReader和OutputStreamWriter中,可以通过指定编码方式来完成gbk文件的读写。

//默认情况下,win系统编码是gbk/gbk2312,读取和写入时加入编码字符集可以解决乱码

public class ReadAndWrite {

private static void test(){

File firstFile = new File("D://fileone.txt");

File secondFile=new File("D://filesecond.txt");

BufferedReader in = null;

BufferedWriter out = null;

try {

in = new BufferedReader(new InputStreamReader(new FileInputStream(firstFile), "gbk"));

out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(secondFile), "gbk"));

String line = "";

while((line = in.readLine())!=null){

System.out.println(line);

out.write(line+"\r\n");

}

} catch (FileNotFoundException e) {

System.out.println("file is not fond");

} catch (IOException e) {

System.out.println("Read or write Exceptioned");

}finally{

if(null!=in){

try {

in.close();

} catch (IOException e) {

e.printStackTrace();

}}

if(null!=out){

try {

out.close();

} catch (IOException e) {

e.printStackTrace();

}}}}

}

还有一定要写BufferedWriter out的close不然什么都不会被写入文件的,这点至关重要!!!注意要写入换行时,一定要\r\n,否则无效

java读取中文_java读写中文文件相关推荐

  1. java properties中文_Java读写.properties文件解决中文乱码问题

    一般使用到properties配置文件,一般都是在spring项目里面,直接由框架帮你读,当然,你也得考虑到编码的问题. 但是现在要是要求使用Java直接读写properties文件,就发现很多的问题 ...

  2. java读取空格_java 读取文件路径空格和中文的处理

    应用部署时,发生文件读取错误,发现是部署路径中含有空格的文件夹名,然后把应用服务器位置迁移了. 从网上找到如下方案: 1, TestURL().class.getResource("&quo ...

  3. java资源文件获取属性_Java读写资源文件类Properties

    Java中读写资源文件最重要的类是Properties 1) 资源文件要求如下: 1.properties文件是一个文本文件 2.properties文件的语法有两种,一种是注释,一种属性配置. 注  ...

  4. java读取系统中指定的文件_java读取jar中指定的文件

    Java 档案 (Java Archive, JAR) 文件是基于 Java 技术的打包方案.它们允许开发人员把所有相关的内容 (.class.图片.声音和支持文件等) 打包到一个单一的文件中.JAR ...

  5. JAVA编程TXT文件_java读写txt文件的方法

    java读写txt文件的方法 发布时间:2020-06-26 15:54:02 来源:亿速云 阅读:111 作者:Leah 本篇文章为大家展示了java读写txt文件的方法,代码简明扼要并且容易理解, ...

  6. Java对dat文件内容进行查询_java读写dat文件

    Java的输入输出包括字节流.文件流和对象流等,要注意区分不同流使用的不同类.字... Java的输入输出包括字节流.文件流.对象流等,要注意区分不同流使用的不同类.字... 使用二进制 I/O 将 ...

  7. java dbf文件_Java读写dbf文件

    展开全部 Java读取DBF文件,需要加载开源jar包JavaDBF.jar,然后使用62616964757a686964616fe4b893e5b19e31333337613133里面的方法进行读写 ...

  8. java 读取浏览器_JAVA读取文件流,设置浏览器下载或直接预览操作

    最近项目需要在浏览器中通过URL预览图片.但发现浏览器始终默认下载,而不是预览.研究了一下,发现了问题: // 设置response的Header,注意这句,如果开启,默认浏览器会进行下载操作,如果注 ...

  9. python读中文-python读写中文

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. api api annotation json.dumps( ) 将py ...

  10. es elasticsearch 几种常见查询场景 二次分组 java读取es的查询json文件

    大家好,我是烤鸭: es中几种常见的查询场景,使用java读取es的json文件进行查询. es 中文使用手册. https://www.elastic.co/guide/cn/elasticsear ...

最新文章

  1. APP检测软件更新逻辑
  2. 几句话说明 .NET MVC中ViewData, ViewBag和TempData的区别
  3. 新手入门深度学习 | 3-3:神经网络层Layers
  4. 通过exp命令对Oracle数据库进行备份操作(提供两种情况的备份:备份本地,备份远程的数据库)
  5. echart实现3d地图_3D飞线效果——让线“飞”起来的秘密
  6. 使用 Vue.js 和 Chart.js 制作绚丽多彩的图表
  7. 【学习笔记】圆方树(CF487E Tourists)
  8. 数据结构(二):线性表的使用原则以及链表的应用-稀疏矩阵的三元组表示
  9. Mac、centos安装MongoDB
  10. Android设备给Android设备刷固件
  11. 怎么查看CAD图纸呢?如何实现CAD快速看图?
  12. Redis入门指南笔记
  13. ps: 如何调出辅助线
  14. win10计算机磁盘图标,Win10系统硬盘图标怎么更换?Win10系统自定义硬盘图标的方法...
  15. my eclipse 连接数据库(详细步骤)
  16. 跟小静读CLR via C#(06)- 构造器
  17. 数据中心蓄冷时间多长合适呢?-孙长青
  18. gwr模型用什么做_建筑信息模型是什么?能做什么?
  19. 2.4:使用交换机构建简单局域网——交换机的高级管理
  20. 惠普服务器找不到阵列,HP服务器RAID设置方法介绍

热门文章

  1. 最常用高频汉字前4000
  2. php私章制作,PS制作一枚私人的古典型印章教程
  3. NeatUpload的使用方式
  4. 快逸报表传递中文参数乱码解决
  5. R语言数据科学编程教程-从新手到大师
  6. JavaWeb学习心得之自定义传统标签
  7. YDOOK:STM32: 最新版选型手册下载 2021
  8. gimp中文版教程_Gimp中文经典入门实用教程.pdf
  9. 贪心 - [POI2006]ORK-Ploughing
  10. IE浏览器调用ocx控件实现PDF、图片文件打印