在用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读写.properties文件实例,解决中文乱码问题

package com.lxk.propertyFileTest; import java.io.*; import java.util.Properties; /** * 读写properties文 ...

Java读写资源文件类Properties

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

C++读写EXCEL文件OLE,java读写excel文件POI 对比

C++读写EXCEL文件方式比较 有些朋友问代码的问题,将OLE读写的代码分享在这个地方,大家请自己看.http://www.cnblogs.com/destim/p/5476915.html C++ ...

Java读写txt文件

1.Java读取txt文件 1.1.使用FileInputStream: public static String readFile(File file, String charset){ //设置默 ...

Java 读写XML文件 API--org.dom4j

om4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个十分优秀的JavaXML API,具有性能优异.功能强大和极其易使用的特点,同时它也是一个开放源代码的软件 ...

java读写excel文件( POI解析Excel)

package com.zhx.base.utils; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi ...

《Java知识应用》Java读写DBF文件

1. 准备: Jar包下载:链接: https://pan.baidu.com/s/1Ikxx-vkw5vSDf9SBUQHBCw 提取码: 7h58 复制这段内容后打开百度网盘手机App,操作更方便 ...

java读写大文件

java读写2G以上的大文件(推荐使用以下方法) static String sourceFilePath = "H:\\DataSource-ready\\question.json&qu ...

JAVA读写CSV文件

最近工作需要,需要读写CSV文件的数据,简单封装了一下 依赖读写CSV文件只需引用`javacsv`这个依赖就可以了 net.sou ...

随机推荐

轻量级“集合”迭代器-Generator

Generator是PHP 5.5加入的新语言特性.但是,它似乎并没有被很多PHP开发者广泛采用.因此,在我们了解PHP 7对Generator的改进之前,我们先通过一个简单却显而易见的例子来了解下G ...

寒假D3 A Find the Lost Sock

Alice bought a lot of pairs of socks yesterday. But when she went home, she found that she has lost ...

从问题域出发认识Hadoop生态系统

近些年来Hadoop生态系统发展迅猛,它本身包含的软件越来越多,同时带动了周边系统的繁荣发展.尤其是在分布式计算这一领域,系统繁多纷杂,时不时冒出一个系统,号称自己比MapReduce或者Hive高效 ...

Dynamic AX 4.0 用户组权限SecurityKey

UserId _userId = "IT001"; UserGroupId _userGroupId = "ABC_1"; DomainId _domainId ...

MT【16】证明无理数(2)

证明:$sin10^0$为无理数. 分析:此处用$sin$的三倍角公式,结合多项式有有理根必须满足的系数之间的关系可以证明. 评:证明$sin9^0$为无理数就不那么简单.思路:先利用$sin54^0 ...

CDH集群中YARN的参数配置

CDH集群中YARN的参数配置 前言:Hadoop 2.0之后,原先的MapReduce不在是简单的离线批处理MR任务的框架,升级为MapReduceV2(Yarn)版本,也就是把资源调度和任务分发两 ...

廖雪峰网站:学习python函数—递归函数(四)

# 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数 # 计算阶乘n! = 1 x 2 x 3 x ... x n,用函数fact(n)表示,可以看出: # fact ...

Linux下使用timedatectl命令时间时区操作详解

timedatectl命令对于RHEL / CentOS 7和基于Fedora 21+的分布式系统来说,是一个新工具,它作为systemd系统和服务管理器的一部分,代替旧的传统的用在基于Linux分布 ...

中点Brehensam画线算法

#include #include #include"graphics.h" //函数声明 void MidBreha ...

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

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

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

  2. java生成txt表格_java读取txt文件表格并生成新txt

    展开全部 可以使用java中的I/O流来读取文件并生产新文件,给你个代码例子:import java.io.BufferedReader; import java.io.File; import ja ...

  3. java 调用 swf 文件上传_java SpringMvc 实现文件在线预览(openoffice+swftools+flexpaper)

    项目需求:服务器接受的文件当下只能下载之后才能浏览内容,现需要后台能在线浏览到文件内容,避免繁琐无用文件下载操作. 通过几天网上资料搜索,目前免费的在线预览开发技术使用最多还是(openoffice+ ...

  4. java调用b超_java开源中文分词-jcseg

    jcseg是使用Java开发的一个中文分词器,使用流行的mmseg算法实现. 1.目前最高版本:jcseg 1.7.1. 兼容最高版本的lucene. 2.mmseg四种过滤算法,分词准确率达到了98 ...

  5. java如何处理csv文件上传_java处理csv文件上传示例

    前言:示例只是做了一个最最基础的上传csv的示例,如果要引用到代码中去,还需要根据自己的业务自行添加一些逻辑处理. ReadCsvUtil工具类 package com.hanfengyeqiao.g ...

  6. java搜索文件夹中文件是否存在_java中判断文件文件夹是否存在的方法(附代码)...

    1.判断文件夹是否存在,不存在则创建:(java相关视频教程推荐:java视频教程)File folder = new File("d:est1est2"); if (!folde ...

  7. java列出文件正则过滤_JAVA正则表达式过滤文件的实现方法

    java正则表达式过滤文件的实现方法 正则表达式过滤文件列表,听起来简单,如果用java实现,还真需要一番周折,本文简析2种方式 1.适用于路径确定,文件名时正则表达式的情况(jdk6的写法) Str ...

  8. java 删除指定目录_Java 删除目录 指定文件

    package delete; import java.io.File; /** * 删除文件操作 * @author zengpan * */ public class DeleteFileTest ...

  9. java实现对大文件切割下载_Java实现大文件的切割与合并操作示例

    Java实现大文件的切割与合并操作示例 发布时间:2020-09-27 02:25:08 来源:脚本之家 阅读:99 作者:HiBoyljw 本文实例讲述了Java实现大文件的切割与合并操作.分享给大 ...

  10. java上传csv文件上传_java处理csv文件上传示例详解

    前言:示例只是做了一个最最基础的上传csv的示例,如果要引用到代码中去,还需要根据自己的业务自行添加一些逻辑处理. readcsvutil工具类 package com.hanfengyeqiao.g ...

最新文章

  1. 区块链即数字生产关系
  2. linux ifconfig 命令详解
  3. 蓝桥学院2019算法题1.3
  4. 程序员,请不要抢系统管理员的饭碗
  5. 路由器DHCP服务器及PPP封装验证
  6. vmware安装centos6-步骤小结
  7. 无代码调整聚类热图分支顺序
  8. abp vnext中swagger使用小结
  9. 新物种!大数据安全工程研究中心告诉你什么叫“数据安全成熟度测评师”
  10. 这是一份简易的ACM模板
  11. QT修改应用程序图标
  12. 腾讯云服务器ftp部署及文件上传
  13. 如何获取EasyCVR平台设备通道的RTMP视频流地址?
  14. 苹果认怂了!iPhone 将改用 USB-C 接口
  15. 网络库libevent、libev、libuv、libhv对比
  16. 应急照明市电检测_A型0.5KVA应急照明集中电源ty-d市电检测 市电监测
  17. 中国移动CMnet和CMwap两种网络的区别?
  18. 10-集合(核心类库)
  19. 高德 java.lang.UnsatisfiedLinkError: Native method not found: com.autonavi.amap.mapc
  20. 小米2018春招实习笔试题总结

热门文章

  1. 树莓派4B引脚定义及运行实例
  2. 2019年中国软杯-基于深度学习的银行卡号识别系统
  3. 两种.luac的反编译过程
  4. 数学建模题目和模型汇总(2000-2019 国赛本科组)
  5. c语言如何输出数组最大值和最小值,C语言输出数组中最大和次大的数
  6. ShineDisk M667固态修复记录 慧荣SM2258XT开卡量产工具
  7. Android调用jni全过程
  8. MotoSimEG-VRC软件:安川机器人摆动焊接虚拟仿真操作方法
  9. 常用电子元器件基本知识整理
  10. 郝斌老师c语言笔记 TXT,郝斌老师c语言笔记