`
djun100
  • 浏览: 163653 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

java读取写入utf-8编码文件

 
阅读更多
	private static void replace(File file,String searchStr,String replaceStr) {
		// TODO Auto-generated method stub
	        if(searchStr == null){
	            return;
	        }
	        try{
/*	            FileReader reader = new FileReader(file);
	            char[] dates = new char[1024];
	            int count = 0;
	            StringBuilder sb = new StringBuilder();
	            while((count = reader.read(dates)) > 0){
	                String str = String.valueOf(dates, 0, count);
	                sb.append(str);
	            }
	            reader.close();*/
	            
	            
	            InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "UTF-8");
                StringBuffer sbread = new StringBuffer();
                while (isr.ready()) {
                	sbread.append((char) isr.read());
                }
                isr.close();
	            // 从构造器中生成字符串,并替换搜索文本
	            String str = sbread.toString().replace(searchStr, replaceStr);
/*	            FileWriter writer = new FileWriter(file);
	            writer.write(str.toCharArray());
	            writer.close();*/
	            OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(file),"UTF-8");
	            out.write(str.toCharArray());
	            out.flush();
	            out.close();
	        }catch(Exception e){
	            e.printStackTrace();
	        }
	        System.out.println("替换完成!");
	}
因为FileWriter在写文件的时候,其编码方式似乎是System.encoding或者System.file.encoding(已经证明FileWriter和FileReader确实使用系统当前默认的编码方式,更多信息包括FileReader的详见http://www.javapractices.com/Topic42.cjp),
*在中文win下encoding基本是gb2312,在en的win下基本是iso-8859-1,总之不是utf-8。
*所以要创建一个utf-8的文件,用FileWriter是不行的。(FileWriter和FileReader都不支持通过参数指定编码方式,而OutputStreamWriter和InputStreamReader可以。这两个类从名字上就可以看到是字节流和字符流的组合,实际上也是连接两者的桥梁)。 目前不知道如何更改其用来写文件的编码方式,因此对于创建utf-8文件使用如下方式来代替。
分享到:
评论

相关推荐

    解决GDAL读取SHP中文乱码

    完善说明,通过对网上的东西,东拼西凑的,终于解决了GDAL读取中文的乱码问题,或者是通过设置Gdal.SetConfigOption("SHAPE_ENCODING","CP936")后,能够读取中文,但是还是存在一个BUG,那比较中文是“张三”,读取...

    JAVA上百实例源码以及开源项目

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    Vansah-API-Binding-Java:Java的Vansah API绑定可用于从基于Java的语言访问Vansah的API

    所有请求和响应均使用JSON格式和UTF-8编码。 Vansah的API是基于HTTP的,您可以使用简单的HTTP请求与之交互。 所有写入的请求都必须使用HTTP POST方法,所有读取的请求都必须使用HTTP GET方法。 数据以JSON格式和...

    day019-io笔记和代码.rar

    * java :UTF-8 * * 数据库: * mysql、oracle、DB2 :UTF-8 * * 开发工具:UTF-8 * 2. 文本文件用统一的字符集 且用字符流读取和写出文本相关文件(最常用) * 3...

    Spire.Pdf.zip 读取PDF文件中的信息

    byte[] bs = str.getBytes("utf-8"); for(int i=0;i;i++) { byte b = bs[i]; if(b==0) { bs[i]=9; } } str = new String(bs, "utf-8"); str = str.replace("\t", ""); ...

    JAVA上百实例源码以及开源项目源代码

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    org.heinzelotto.fileindex:Kotlin库,用于监视目录中的更改和索引文件内容

    文件索引 Kotlin库监视目录中的更改和索引文件内容。... 支持utf-8编码文件。 注意事项 这使用了kotlin协程,因此请确保您的Java和Kotlin发行版是最新的。 它适用于Java 14.0.2和kotlin 1.4.10。 另请注意,由于默认

    新版Android开发教程.rar

    8 Android Android Android Android 开发入门 System System System System Requirements Requirements Requirements Requirements The sections below describe the system and software requirements for ...

    java开源包10

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包1

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包8

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    ArduinoServer:Arduino上的客户端服务器

    要从源代码构建项目,请执行Maven目标:mvn clean编译程序集:单使用以下参数运行jar:java -jar -Dfile.encoding = UTF-8 ArduinoServer-1.0-SNAPSHOT.jar(这样编码不会消失)。 写入档案要发送写入文件的事件,...

    贝岭的matlab的代码-nfccreator:基于JavaME的NFCCreator可以将许多不同的NFC论坛NDEF消息格式写入所有支持的

    可以在源代码中调整默认的英语语言/UTF-8 编码。 SMS:如果包含数字和正文文本,则存储为 URI 记录,如果还选择了可选标题和操作,则存储为智能海报。 带注释的 URL:包含 URL 和文本记录的 NDEF 消息。 类似于智能...

    java开源包4

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包101

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    YOYOPlayer1.1

    程序的默认设置编码是GBK,如果是UTF-8的用户,可以在首选项修改. 四,其它方面 1,可以选择音频设备,这在一定程度上可以选择几个设置对比一下效果.尽量减少播放器没有声音的情况. 2,增加在任务栏滚动显示歌曲...

    java开源包11

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包6

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包9

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

Global site tag (gtag.js) - Google Analytics