疯子解决eclipse 编码问题的小工具

标签: 疯子 eclipse 编码 | 发表时间:2013-07-21 10:50 | 作者:
出处:http://www.iteye.com
eclipse 默认为中文编码为gbk,当用gbk环境写的代码,其物理文件的编码为gbk.即使用eclipse 改为utf-8其物理文件的编码仍不变,所以通过以下代码生成。


package com.sparrow.utils;

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

import com.sparrow.constant.COMMON;
import com.sparrow.core.Log;

public class ConvertEncoding {
	private static boolean isTest = true;
	private static String sourceEncoding = "gb2312";
	private static String descEncoding = "UTF-8";

	/**
	 * @author zlz
	 * 
	 * @time 2013-7-16上午10:26:40
	 * @param args
	 */
	public static void main(String[] args) {

		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		String rootPath = null;
		String yn = null;
		System.out.println("请输入要转换的路径");
		try {
			rootPath = bf.readLine();
		} catch (IOException e) {
		}

		Convert(rootPath);
		System.out.println("请输入文件的当前编码,回车默认为gbk");
		try {
			String tempEncoding = bf.readLine();
			if (!"".equals(tempEncoding)) {
				sourceEncoding = bf.readLine();
			}
		} catch (IOException e) {
		}

		System.out.println("请输入目标文件编码,回车默认为utf-8");
		try {
			String tempEncoding = bf.readLine();
			if (!"".equals(tempEncoding)) {
				descEncoding = bf.readLine();
			}
		} catch (IOException e) {
		}

		System.out.println("立即生成吗?Y/N");

		try {
			yn = bf.readLine();
		} catch (IOException e) {
		}

		if (yn.toLowerCase().equals("y")) {
			isTest = false;
			Convert(rootPath);
			System.out.println("ending");
		}
	}

	public static void Convert(String path) {
		File file = new File(path);
		File[] files = file.listFiles();
		for (File f : files) {
			if (f.isDirectory() && !f.isHidden()) {
				Convert(f.getPath());
			} else {
				String fileName = f.getPath();
				String sourceText = readFileContent(fileName, sourceEncoding);
				if (fileName.endsWith(".java")) {
					if (isTest) {
						System.out.println(sourceText);
					} else {
						writeFile(fileName, sourceText, descEncoding);
						System.out.println(fileName + " is encoded");
					}
				}
			}
		}
	}

	/**
	 * 以行为单位读取文件,常用于读面向行的格式化文件
	 */
	public static String readFileContent(String fileName, String charset) {
		if (StringUtil.isNullOrEmpty(charset)) {
			charset = "UTF-8";
		}
		File file = new File(fileName);
		BufferedReader reader = null;
		StringBuffer sb = new StringBuffer();
		try {
			reader = new BufferedReader(new InputStreamReader(
					new FileInputStream(file), charset));
			String tempString = null;
			while ((tempString = reader.readLine()) != null) {
				sb.append(tempString);
				sb.append(COMMON.ENTER_TEXT);
			}
			reader.close();
		} catch (IOException e) {
			Log.getInstance().error(e);
		} finally {
			if (reader != null) {
				try {
					reader.close();
				} catch (IOException e1) {
				}
			}
		}
		return sb.toString();
	}

	public static boolean writeFile(String filePath, String s, String charset) {
		OutputStreamWriter osw = null;
		try {
			osw = new OutputStreamWriter(new FileOutputStream(filePath),
					charset);
			osw.write(s, 0, s.length());
			osw.flush();
			return true;
		} catch (Exception e) {
			Log.getInstance().error(e);
			return false;
		} finally {
			if (osw != null) {
				try {
					osw.close();
				} catch (IOException e) {
				}
			}
		}
	}

}



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [疯子 eclipse 编码] 推荐:

疯子解决eclipse 编码问题的小工具

- - ITeye博客
eclipse 默认为中文编码为gbk,当用gbk环境写的代码,其物理文件的编码为gbk.即使用eclipse 改为utf-8其物理文件的编码仍不变,所以通过以下代码生成. * @time 2013-7-16上午10:26:40. System.out.println("请输入要转换的路径");. System.out.println("请输入文件的当前编码,回车默认为gbk");.

Eclipse工程编码设置

- - 开源软件 - ITeye博客
新建一个项目,首先要做的就是设置编码,如果忽略此步,将导致很严重的问题. Trunk项目从Branch合并而来的文件,编码为UTF-8,如果Trunk下的编码使用默认的GB18030,将导致乱码. 如果再将此问题提交到svn上,后果很严重. 1.改变整个工作空间的编码. eclipse->window->preferences->General->Content Types->选中需要设置的文件类型->Default encoding:UTF-8->Update.

Eclipse 3.7发布

- Power - Solidot
Eclipse基金会宣布发布开源集成开发环境Eclipse 3.7,代号Indigo.

Google宣布Eclipse Labs

- 旺旺 - Solidot
Google和众多开源社区的开发者都使用Eclipse IDE,Google开发者用Eclipse开发了Android、App Engine、Google Chrome,以及大量Web应用程序. 现在Google宣布与Eclipse基金会合作,促进Eclipse生态系统,他们的合作结晶是Eclipse Labs.

eclipse插件-easy explore

- - 博客园_首页
最近找到一个Eclipse的插件,名字是Easy Explore,是 Easy Structs 其 中的一个部分. 主要的功能就是在Eclipse里面视图的部分如果看到自己的工程,或者Package,包什么的,在安装完该插件以后点击鼠标右键,选 择"Easy Explore"就可以快速的打开该文件的windows存放文件夹,对于快速的导出源文件是一个很有用的插件.

Eclipse Memory Analyzer简介

- - Java - 编程语言 - ITeye博客
Eclipse Memory Analyzer是一个非常棒的堆内存分析工具,是JDK自带的堆分析工具jhat的一个非常好的替代品,能够快速地定位Java内存泄露的原因.       可能有的同学会问,JVM不是号称自动内存管理,GC会自动垃圾回收,Java怎么会有内存泄露,不会搞错吧.       在开始分析之前,我们先想想,在编程这个角度上,我们如何避免堆内存泄露呢.

Eclipse执行Hadoop WordCount

- - CSDN博客云计算推荐文章
Eclipse执行Hadoop WordCount.   我的Eclipse是安装在windows下的,通过Eclipse执行程序连接Hadoop,需要让虚拟机的访问地址和本机的访问地址保持在同一域内,虚拟机的地址更改前面的文章介绍过了,如果想改windows本机ip地址,打开“网络和共享中心“,点击左侧菜单”更改适配器设置“,选择相应连接网络进行IpV4属性地址修改即可.

Eclipse注释模板

- - ITeye博客
Eclipse注释模板:Window->Preference->Java->Code Style->Code Template. (1)Comments-Types 类注释. * @author 你的名字. * @Version 版本. * @ModifiedBy 修改人. * @Copyright 公司名称.

Eclipse插件最牛的TOP30

- - CSDN博客研发管理推荐文章
Eclipse的应用需要众多的插件,但是Eclipse的插件大家又知道多少呢. 1、PyDev – Eclipse的Python开发环境. Pydev这个插件能够让用户利用Eclipse进行Python、Jython以及Iron Python开发,使Eclipse成为一流的Python IDE(集成开发环境).

Eclipse 4.3正式版发布

- - CSDN博客推荐文章
Eclipse 4.3正式版发布. 博客主页: http://blog.csdn.net/chszs. Eclipse 4.3版代号为Kepler. Eclipse WTP升级到3.5版,已经支持JavaEE 7应用程序的开发. Stardust 1.0提供了完整的BPM工具集和运行时. Orion升级到3.0,继续提升了易用性,简化Java应用服务器的部署.