`

java整个项目自动编码转换,欢迎使用,哈哈

阅读更多

项目开发中难免出现编码问题,网上查了一个eclipse插件com.lifesting.tool.encoding,不知道什么原因把我项目弄的一片混乱。

 

痛定思痛,自己写了一个,只要在项目中调用并运行一下Transcoding类就可以了,会自动把项目编码转换成指定的编码,同时会备份项目文件

 

自动检测编码用的是网上的BytesEncodingDetect类,觉得检测的准确度还是可以的,欢迎大家测试或使用

 

Transcoding类:

 

public class Transcoding {

	private BytesEncodingDetect encode = new BytesEncodingDetect();
	private String projectPath = System.getProperty("user.dir");// 获取项目目录
	private File tempPath = null;// 转码备份区,用来备份,注意:每次使用前会自动清空
	private String suf = null;
	private String newCharset = null;

	public Transcoding() {
		// 针对windows目录,linux请自行修改
		String proPath = projectPath.substring(projectPath.lastIndexOf("\\") + 1);
		String temp_path = "D:/备份/" + proPath;
		tempPath = new File(temp_path);// 转码备份区,可自行修改
		if (!tempPath.exists()) {
			tempPath.mkdirs();
		} else {
			delete(tempPath);// 注意:每次使用前会自动清空
		}
	}

	/**
	 * 把当前项目复制一份到转码备份区
	 */
	private void backUp(File srcPath, File dstPath) {
		if (srcPath.isDirectory()) {
			if (!dstPath.exists()) {
				dstPath.mkdirs();
			}
			String files[] = srcPath.list();
			for (int i = 0; i < files.length; i++) {
				backUp(new File(srcPath, files[i]), new File(dstPath, files[i]));
			}
		} else {
			if (!srcPath.exists()) {
				System.out.println("File or directory does not exist.");
				System.exit(0);
			} else {
				try {
					InputStream in = new FileInputStream(srcPath);
					OutputStream out = new FileOutputStream(dstPath);
					byte[] b = new byte[1024];
					int len = 0;
					while ((len = in.read(b)) != -1) {
						out.write(b, 0, len);
					}
					in.close();
					out.close();
				} catch (Exception e) {
					e.printStackTrace();// 一旦出错,根据信息自己找原因吧
					System.out.println(srcPath.getAbsolutePath() + " " + dstPath.getAbsolutePath());
				}
			}
		}
	}

	/**
	 * 用转码备份区文件转码后覆盖项目
	 */
	private void convert(File srcPath, File dstPath) {
		if (srcPath.isDirectory()) {
			if (!dstPath.exists()) {
				dstPath.mkdirs();
			}
			String files[] = srcPath.list();
			for (int i = 0; i < files.length; i++) {
				convert(new File(srcPath, files[i]), new File(dstPath, files[i]));
			}
		} else {
			if (!srcPath.exists()) {
				System.out.println("File or directory does not exist.");
				System.exit(0);
			} else {
				//只转码指定后缀的文件
				if (!srcPath.getName().toLowerCase().endsWith(suf)) {
					return;
				}
				try {
					// 获取文件编码
					String charset = BytesEncodingDetect.javaname[encode.detectEncoding(srcPath)];
					//编码相同,无需转码
					if (charset.equalsIgnoreCase(newCharset)) {
						return;
					}
					InputStream in = new FileInputStream(srcPath);
					OutputStream out = new FileOutputStream(dstPath, false);
					BufferedReader br = new BufferedReader(new InputStreamReader(in, charset));
					BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out, newCharset));
					while (br.ready()) {
						bw.append(br.readLine());
						bw.newLine();
					}
					br.close();
					bw.close();
				} catch (Exception e) {
					e.printStackTrace();
					System.out.println(srcPath.getAbsolutePath() + " " + dstPath.getAbsolutePath());
				}
			}
		}
	}

	/**
	 * 删除目录
	 */
	private void delete(File file) {
		if (file.isDirectory()) {
			File[] list = file.listFiles();
			for (File f : list) {
				delete(f);
			}
			file.delete();
		} else {
			file.delete();
		}
	}

	/**
	 * 对当前项目进行转码,会把当前项目覆盖
	 * suf:规定要转码的文件后缀;charset:规定要转的编码
	 */
	public void encoding(String suf, String charset) {
		this.suf = suf;
		newCharset = charset;
		backUp(new File(projectPath), tempPath);
		convert(tempPath, new File(projectPath));
		System.out.println("encoding successfully!");
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new Transcoding().encoding("java", "utf-8");

	}

}
分享到:
评论

相关推荐

    java 文件编码转换

    标题"java 文件编码转换"指的是使用Java来解决文件编码问题,而描述中提到的"提供一个jar包和一个java文件"则暗示了我们可以通过这两个文件实现这个功能。 首先,`chardet.jar`可能是一个字符集检测库,用于自动...

    java、Android项目编码转换器

    这是一个在装了java虚拟机的pc 上,可以双击运行的界面软件,主要功能是把从网上下载的一个项目的编码格式转换成utf-8的,解决eclipse打开时中文等是乱码的问题。

    JAVA 转换字符编码工具

    `JAVA 转换字符编码工具`可能是一个用于处理字符编码转换的Java程序,旨在帮助开发者解决不同编码格式之间转换的问题。这篇博文链接(虽然没有提供具体内容)可能详细介绍了这个工具的实现原理和使用方法。 在Java...

    Java做的Unicode编码转换器

    Java编写的Unicode编码转换器是一种实用工具,它能够帮助用户将各种国家和地区的文字转换成Unicode编码,同时也能实现从Unicode编码回转到原始字符。Unicode是一种国际标准,旨在为全球所有的字符提供一个统一的编码...

    Java源码编码转换器 v2.0 GBK TO UTF8

    在实际操作中,用户可以使用JavaFileConverter工具,它提供了用户友好的界面,方便选择待转换的Java文件或整个目录,并指定目标编码格式为UTF-8。转换过程会自动处理每个文件,同时,由于包含了源码,用户也可以根据...

    项目编码转换工具

    该工具使用java所写,所以运行需要有java环境。该工具可以指定项目目录转换该项目下的指定后缀名(如:.java .cs .as等等)的文件编码。该工具不修改原项目文件,会在原项目的同级目录下生成转换后的项目。

    java 中文Unicode转换

    每个`char`变量可以存储一个Unicode码点,但需要注意的是,对于超出BMP范围的字符,Java使用代理对(Surrogate Pair)来存储。一个代理对由两个`char`组成,它们共同表示一个码点。 将中文字符转换为Unicode编码,...

    文件内容替换与文件编码格式转换java源码

    本主题聚焦于如何使用Java源码实现这一功能,尤其是针对Eclipse开发环境中从GBK编码转换到UTF-8编码的过程。下面我们将深入探讨相关的知识点。 首先,我们需要了解编码的基本概念。GBK是中国大陆使用的汉字编码标准...

    Java源码编码转换器 GBK TO UTF8 UTF8 To GBK(无源码)

    Java源码编码转换器是一款实用工具,主要用于将Java源代码文件从GBK编码转换为UTF-8编码,或者从UTF-8编码转换为GBK编码。在软件开发过程中,尤其是在处理中文字符时,编码问题是一个常见的挑战。GBK是中文环境下...

    如何使用Java代码将GBK编码格式的工程转换为UTF-8编码格式的工程.zip

    总之,Java代码转换GBK编码的工程到UTF-8编码,需要处理各个层面的文件和配置,确保整个工程的一致性。这个过程需要谨慎操作,以避免数据丢失或编码混乱。理解并掌握这一技巧,对于处理涉及多种编码格式的项目是非常...

    使用 Java 对 Linux 下文件编码格式进行批量转换源代码

    测试使用说明: 1。将 字符集编码格式为 GB2312 的文件 test0.java,test...使用本工具可以对 Linux 下文件的字符集编码格式进行批量转换。只需适当配置一下,可以批量处理各种文件格式的文件,如 *.txt,*.java 等等。

    java视频转换工具类(附带转换工具类)

    在Java编程环境中,开发一个视频转换工具类是一个高级任务,涉及到多媒体处理和文件I/O操作。这个"java视频转换工具类"显然提供了这样的功能,能够将视频文件转换为不同的格式,如mp4、ogg和flv等。这些格式在互联网...

    工程编码格式转换

    4. `build.xml` - 这是Apache Ant构建工具的配置文件,Ant是一个Java编写的构建工具,可以用于自动化项目构建,包括编码格式的转换。 5. `apache-ant-1.8.1-bin.zip` - 这是Apache Ant的安装包,Ant支持通过任务定义...

    java串口通讯 短信测试 comm编程 PDU编码 进制转换 AT命令

    13751069146 Saro Modem 短信测试.txt Java Comm API编程指南....关于java使用javacomm20.doc 常见的进制转换方法.doc 浅谈Java串行端口技术协议.doc 短信 AT 命令参考.doc 短信PDU编码解码.doc 通过串口收发短消息.doc

    myeclipse/eclipse 批量转换java文件编码( com.lifesting.tool.encoding_1.0.0.jar)

    使用这个插件进行批量转换时,你可以在Eclipse或MyEclipse的工作区中选择需要转换的文件或整个项目,然后通过插件提供的功能设定目标编码格式,如GBK,点击执行转换操作。插件会自动读取选中的Java文件,将它们的...

    .net 与Java间RSA加密的转换

    `StringUtils.java`可能是用来处理字符串操作的辅助类,例如转换二进制数据到Base64编码,这对于在不同平台间交换密钥和加密数据非常有用。Base64是一种将二进制数据编码为ASCII字符串的常见方法,便于在网络传输中...

    word 拆分,对比,转换java源码,文件编码识别,简繁转换

    综上所述,这个项目涵盖了Java编程中处理Word文档的核心技术,并涉及到文件编码识别和中文转换,对于进行文档操作的Java开发者来说具有很高的参考价值。通过理解和应用这些知识点,开发者可以构建自己的文档处理系统...

    java动态识别文件编码EncodingDetect.java附使用方法很简单

    当我们循环遍历文件进行操作的时候可能遇到各种各样的文件编码格式,如果不知道当前循环的文件格式的话,将会遇到各种各样的问题,...使用java动态识别文件编码EncodingDetect.java这个工具类以后就变得异常简单了!

    腾讯java编码规范

    腾讯 Java 编码规范是腾讯集团管理标准的一部分,旨在确保公司项目代码的易维护性和编码安全性。该规范涵盖了 Java 编码风格、文件组织、代码风格、注释、命名、声明、异常、习惯等方面。 一、文件组织 * 文件注释...

    利用kettle的api运用Java代码完成数据转换到excel和数据库源码

    利用 Kettle 的 API 运用 Java 代码完成数据转换到 Excel 和数据库源码 Kettle 是一个开源的 ETL 工具,纯 Java 编写,绿色无需安装,数据抽取高效稳定。Kettle 中有两种脚本文件,transformation 和 job,...

Global site tag (gtag.js) - Google Analytics