`

关于文件转码的代码例题

J# 
阅读更多
引用

package org.tarena.day03;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class FileUtil {
	
	//多转码如:gbk转码Utf-8;
	//gbk 每个字符占2个字节;
	//utf-8 每个字符占3个字节,每个英文字母占一个字节;
	static void copy(File from,File to,
			String charsetFrom,String charsetTo) throws Exception{
		InputStreamReader in = new InputStreamReader(
				new FileInputStream(from),charsetFrom);
		OutputStreamWriter out = new OutputStreamWriter(
				new FileOutputStream(to),charsetTo);//在这里要添加编码转换方式;
		char[] cbuf = new char[1024];
		int n;
		while((n=in.read(cbuf))!=-1){
			out.write(cbuf, 0, n);
		}
		in.close();
		out.close();
	}
	//创建gbk的文本文件;
	static void createTextGbk(File fl) throws Exception{
		OutputStreamWriter out = new OutputStreamWriter(
				new FileOutputStream(fl),"GBK");
		char[] cbuf = {'你','好',',','j','a','v','a'};
		out.write(cbuf);
		out.close();
	}
	
	public static void main(String[] args) throws Exception{
		File gbk = new File("/home/soft22/Desktop/gbk.txt");
		createTextGbk(gbk);
		File utf = new File("/home/soft22/Desktop/utf.txt");
		copy(gbk,utf,"GBK","UTF-8");
		
	}

}
	


char[] cbuf = {'你','好',',','j','a','v','a'};
		out.write(cbuf);
//显示结果:你好,java


gbk 文本文件:


gbk 每个字符占2个字节;
utf-8 文本文件:


utf-8 每个字符占3个字符,每个英文字母占一个字节;

引用

编码的方式:
每个字符对应一个整数。不同的国家有不同的编码,当编码方式和解码方式不统一时,产生乱码。因为美国最早发展软件,所以每种的编码都向上兼容 ASCII 所以英文没有乱码。
ASCII(数字、英文)1 个字符占一个字节(所有的编码集都兼容 ASCII)
ISO8859-1(欧洲)     1 个字符占一个字节
GB-2312/GBK               1 个字符占两个字节
Unicode                         1 个字符占两个字节(网络传输速度慢)
UTF-8                            变长字节,对于英文一个字节,对于汉字两个或三个字节。

InputStreamReader 和 OutputStreamWriter(字节流转化成字符流的桥转换器)
这两个类不是用于直接输入输出的,他是将字节流转换成字符流的桥转换器,并可以指定编解码方式。

Reader 和 Writer (字符流类,所有字符流的父类型)
1) Java 技术使用 Unicode 来表示字符串和字符,而且提供 16 位版本的流,以便用类似的方法处理字符。
2) InputStreamReader 和 OutputStreamWriter 作为字节流与字符流中的接口。
3) 如果构造了一个连接到流的 Reader 和 Writer,转换规则会在使用缺省平台所定义的字节编码和 Unicode之间切换。

BufferedReader/(BufferedWriter,不常用)(这两个类需要桥转换)
PrintWriter(带缓存的字符输出流,不需要桥转换)
常用输入输出类型,不需要桥接,其中其它方法请参看 API 文档。
以上两个都是过滤流,需要用其他的节点流来作参数构造对象。
BufferedReader 的方法:readLine():String ,当他的返回值是 null 时,就表示读取完毕了。要注意,再写入时要注意写换行符,否则会出现阻塞。
BufferedWriter 的方法:newLine() ,这个方法会写出一个换行符。
PrintWriter 的方法:println(….String,Object 等等)和 write(),println(...)这个方法就不必再写换行符了,
在使用时会自动换行。
注意:在使用带有缓冲区的流时,在输入之后就要 flush()方法,把缓冲区数据发出去。


原则:保证编解码方式的统一,才能不至于出现错误。
java.io 包的 InputStreamread 输入流的从字节流到字符流的桥转换类。这个类可以设定字符转换方式。
OutputStreamred:输出流的字节流桥转换成字符流
Bufferread 有 readline()使得字符输入更加方便。
在 I/O 流中,所有输入方法都是阻塞方法。
Bufferwrite 给输出字符加缓冲,因为它的方法很少,所以使用父类 PrintWrite,它可以使用字节流对象,
而且方法很多。

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    批量文件转码工具

    批量文件转码工具 批量文件转码工具 批量文件转码工具 批量文件转码工具 批量文件转码工具

    文件转码软件

    在文件转码的场景下,用户可以使用OpenOffice将Word、Excel、PowerPoint文件转换为OpenDocument格式或其他常见的办公文件格式,同时,由于其开放源代码的特性,开发者还可以利用其API开发自定义的转码解决方案。...

    某编码的文本文件批量转码为UTF8工具及java代码

    比如说我想把用GBK编码的/home/user/uchome目录下的文件全部转码为UTF8,转码之后的文件存储在/home/user/uchome2,那么命令为 java -jar "encoding.jar" /home/user/uchome /home/user/uchome2 GBK

    项目文件转码java源码

    实际项目中有很多文件的编码是非utf编码,当多种编码的文件相互包含时,会出现乱码。 应实际需求,特写一个java程序,将非utf8编码的文件,转换为utf8编码。省却了一个文件一个文件修改的...可快速批量的见文件转码。

    天翼网关F452配置文件转码软件

    天翼网关F452配置文件转码软件

    华为猫 cfg文件转码

    华为 cfg转码 可利用此软件查看华为猫cfg文件

    myEclipse或Eclipse批量文件转码插件

    比如图2的转码规则就是对项目的jsp文件,不管原来是什么编码,统一转为UTF-8编码,并且同时转换文件内容。可以点击右边的Add /Remove按钮来增加/删除规则。最后点击Apply来保存设置。 step3. 转码 在设置了转码规...

    批量文件转码工具(支持 GBK,UTF-8 转换)

    文件转码工具就是为了解决这个问题而设计的,它们可以帮助用户将文件从一种字符编码格式转换为另一种,以确保文本的正确显示和处理。在这个场景中,我们讨论的是一个专门用于批量转换的工具,它支持GBK和UTF-8这两种...

    ffmpeg 音视频转码代码

    在 CSDN 上,开发者们分享了许多基于 FFmpeg 的转码代码实例,这些代码通常会封装 FFmpeg 的 API,以供编程语言如 C++、Python 或 Java 使用。例如,使用 Python 的 `moviepy` 库可以编写更复杂的转码脚本,包括添加...

    txt乱码解决处理文本文件转码编码csv器gbk互转utf-8自动批量工具html,js,css,md,json,log,py

    支持任意纯文本文件转码(解决任意纯文本文件乱码问题),其能够处理的文件包括但不限于以下几种: 纯文本文件 (.txt,.csv ) 这些文件通常只包含纯文本,没有特殊的格式或样式。 编程语言的源代码文件 Python (.py...

    C#开发的在线或本地视频转码成ts或其他文件代码

    本项目是关于使用C#进行在线或本地视频转码为TS(Transport Stream)或者其他格式的文件。下面我们将深入探讨这个主题。 首先,C#结合FFmpeg,一个开源的跨平台多媒体处理框架,可以实现视频转码。FFmpeg支持多种...

    批量文件转码工具,支持GBK,UTF-8转换,window下面使用,亲测可以使用!.zip

    总之,批量文件转码工具对于处理不同编码格式的文件是非常有帮助的,尤其在处理中文文件时,GBK与UTF-8之间的转换需求尤为常见。这个工具的出现,不仅简化了操作流程,也降低了由于编码问题引发的错误风险。

    获取文件编码格式与文件转码

    在"FileCharSetDemo-master"这个项目中,我们可以找到相关的示例代码,它可能包含了一些实用的方法来演示如何在Android环境中获取文件编码和执行文件转码。这些方法可能包括对文件的读取、字节转换、编码检测和转码...

    批量文件转码工具(支持GBK,UTF-8转换)

    "批量文件转码工具"就是为了解决这个问题而设计的,它能够帮助用户方便地将大量文件从一种编码格式转换为另一种,如GBK到UTF-8。在Windows操作系统环境下,这个工具被证明是有效且实用的。 GBK编码是中国大陆广泛...

    强大的音视频文件转码SDK

    【音视频文件转码SDK详解】 音视频转码是数字媒体处理中的关键技术,它涉及到将原始的音视频数据转换成不同编码格式,以适应不同的播放设备、网络环境或存储需求。这里提到的“强大的音视频文件转码SDK”,显然是一...

    MFC界面实现文件转码

    在MFC中实现文件转码,首先需要读取源文件,然后根据源文件的原始编码进行解码,再按照目标编码进行编码,最后将结果写入新文件。在这个过程中,`CFile`类是用于文件操作的基础,而`CString`类则用于处理字符串。 ...

    C#获取视频文件信息及视频转码操作

    在上述代码中,我们构建了FFmpeg命令行参数,指定输入文件、输出文件,并添加了一个视频滤镜来改变分辨率。然后调用`FFmpeg.Run()`执行转码任务。 在实际应用中,你可能需要根据具体需求调整转码参数,比如比特率、...

    GBK_UTF8批量文件转码工具

    "GBK_UTF8批量文件转码工具"是一个专门用于解决编码转换问题的实用程序,它能够帮助用户将GBK编码的文件批量转换为UTF-8编码。在开发过程中,尤其是使用Eclipse这样的集成开发环境时,如果源代码文件的编码与IDE的...

Global site tag (gtag.js) - Google Analytics