`

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中的字符集编码入门(五)Java代码中的字符编码转换Part1.pdf

    Java中的字符编码转换是编程实践中一个至关重要的概念,尤其是在处理多语言环境和跨平台交互时。Java通过统一采用UTF-16编码格式在JVM内部处理字符,简化了字符操作的复杂性。UTF-16是一种变长的Unicode编码,它可以...

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

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

    项目编码转换工具

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

    java 写的字符编码转换工具(附带源码)

    Java字符编码转换工具是编程中常见的一种实用程序,主要用于处理不同字符编码间的转换问题。在计算机世界里,字符编码是用来表示文本的各种方式,常见的有ASCII、GBK、UTF-8等。不同的编码方式适用于不同的场景,...

    java源文件编码转换工具加源码(自动检测源文件编码类型)

    总的来说,这个工具解决了开发环境中由于源代码编码不一致带来的问题,通过自动化检测和转换,确保了代码的可读性和跨平台兼容性,对于维护大型项目或整合多个代码库尤其有价值。了解并熟练使用这样的工具,对于提升...

    读取创建CSV文件并自动解析文件编码方式

    我们将使用Java语言进行示例,同时引入第三方库来辅助处理编码问题。 首先,创建CSV文件的基本过程涉及将数据写入具有特定分隔符(通常是逗号)的文本文件中。在Java中,我们可以使用内置的`java.io`或Apache ...

    java编码转换介绍文档

    Java编码转换是一个重要的主题,特别是在处理跨平台和国际化应用时。Java编程中,编码问题时常出现,例如在处理中文字符时可能出现乱码。为了解决这些问题,Java提供了一个名为`native2ascii`的工具,该工具能够帮助...

    java 中文Unicode转换

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

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

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

    java 文11件编码转换.docx

    ..java 文11件编码转换.docx

    java 文11件编码转换.pdf

    ..java 文11件编码转换.pdf

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

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

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

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

    Granite Data Services (Flex & Java EE) 自动代码转换

    GraniteDS Flex Java 代码转换 自动代码转换 超好用的Flex代码自动生成工具。直接放到Eclipse的Dropin目录,选择Java项目点右键就可以看到 GraniteDS 的功能了

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

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

Global site tag (gtag.js) - Google Analytics