java读取中文_java读写中文文件
在用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读写中文文件相关推荐
- java properties中文_Java读写.properties文件解决中文乱码问题
一般使用到properties配置文件,一般都是在spring项目里面,直接由框架帮你读,当然,你也得考虑到编码的问题. 但是现在要是要求使用Java直接读写properties文件,就发现很多的问题 ...
- java读取空格_java 读取文件路径空格和中文的处理
应用部署时,发生文件读取错误,发现是部署路径中含有空格的文件夹名,然后把应用服务器位置迁移了. 从网上找到如下方案: 1, TestURL().class.getResource("&quo ...
- java资源文件获取属性_Java读写资源文件类Properties
Java中读写资源文件最重要的类是Properties 1) 资源文件要求如下: 1.properties文件是一个文本文件 2.properties文件的语法有两种,一种是注释,一种属性配置. 注 ...
- java读取系统中指定的文件_java读取jar中指定的文件
Java 档案 (Java Archive, JAR) 文件是基于 Java 技术的打包方案.它们允许开发人员把所有相关的内容 (.class.图片.声音和支持文件等) 打包到一个单一的文件中.JAR ...
- JAVA编程TXT文件_java读写txt文件的方法
java读写txt文件的方法 发布时间:2020-06-26 15:54:02 来源:亿速云 阅读:111 作者:Leah 本篇文章为大家展示了java读写txt文件的方法,代码简明扼要并且容易理解, ...
- Java对dat文件内容进行查询_java读写dat文件
Java的输入输出包括字节流.文件流和对象流等,要注意区分不同流使用的不同类.字... Java的输入输出包括字节流.文件流.对象流等,要注意区分不同流使用的不同类.字... 使用二进制 I/O 将 ...
- java dbf文件_Java读写dbf文件
展开全部 Java读取DBF文件,需要加载开源jar包JavaDBF.jar,然后使用62616964757a686964616fe4b893e5b19e31333337613133里面的方法进行读写 ...
- java 读取浏览器_JAVA读取文件流,设置浏览器下载或直接预览操作
最近项目需要在浏览器中通过URL预览图片.但发现浏览器始终默认下载,而不是预览.研究了一下,发现了问题: // 设置response的Header,注意这句,如果开启,默认浏览器会进行下载操作,如果注 ...
- python读中文-python读写中文
广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. api api annotation json.dumps( ) 将py ...
- es elasticsearch 几种常见查询场景 二次分组 java读取es的查询json文件
大家好,我是烤鸭: es中几种常见的查询场景,使用java读取es的json文件进行查询. es 中文使用手册. https://www.elastic.co/guide/cn/elasticsear ...
最新文章
- APP检测软件更新逻辑
- 几句话说明 .NET MVC中ViewData, ViewBag和TempData的区别
- 新手入门深度学习 | 3-3:神经网络层Layers
- 通过exp命令对Oracle数据库进行备份操作(提供两种情况的备份:备份本地,备份远程的数据库)
- echart实现3d地图_3D飞线效果——让线“飞”起来的秘密
- 使用 Vue.js 和 Chart.js 制作绚丽多彩的图表
- 【学习笔记】圆方树(CF487E Tourists)
- 数据结构(二):线性表的使用原则以及链表的应用-稀疏矩阵的三元组表示
- Mac、centos安装MongoDB
- Android设备给Android设备刷固件
- 怎么查看CAD图纸呢?如何实现CAD快速看图?
- Redis入门指南笔记
- ps: 如何调出辅助线
- win10计算机磁盘图标,Win10系统硬盘图标怎么更换?Win10系统自定义硬盘图标的方法...
- my eclipse 连接数据库(详细步骤)
- 跟小静读CLR via C#(06)- 构造器
- 数据中心蓄冷时间多长合适呢?-孙长青
- gwr模型用什么做_建筑信息模型是什么?能做什么?
- 2.4:使用交换机构建简单局域网——交换机的高级管理
- 惠普服务器找不到阵列,HP服务器RAID设置方法介绍