剔除Eclipse升级后的旧版本插件

删除Eclipse升级后的旧版本插件

注2:不要升级你的Eclipse indigo到SR1或SR2,部署项目N多莫名其妙的问题

注1:经一下代码清理后的Eclipse可能会有诸多问题,请慎用!

Eclipse升级后不会自动删除旧文件,导致占用很多磁盘资源,网上找段代码,贴过来。我用64位的Eclipse会有问题,清理后svn无法加载本地类库,此处屏蔽对svn的清理

import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class EclipseClean {
	public static void rmOld(String dir) {
		try {
			File root = new File(dir);
			if (!root.exists() || !root.isDirectory())
				throw new Exception(dir + " is not Directory");
			List<String> childs = new ArrayList<String>();
			for (String child : root.list()) {
				childs.add(child);
			}
			Collections.sort(childs);
			String preName = "";
			File preFile = null;
			String name = "";
			Pattern p = Pattern.compile("([\\w\\._]*)_\\d.*");
			Matcher m;
			for (int i = 0; i < childs.size(); i++) {
				m = p.matcher(childs.get(i));
				if (m.find()) {
					name = m.group(1);
					if (name.equals(preName)) {
						String fileName = preFile.getName();
						if(!fileName.contains("tigris")){
							System.out.println("delete:" + dir + "\\" + fileName);
							rm(new File(dir + "\\" + fileName));
						}
					}
					preFile = new File(childs.get(i));
					preName = name;
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void rm(File dir) {
		if (dir.isDirectory())
			for (File file : dir.listFiles()) {
				if (file.isFile())
					file.delete();
				else if (file.isDirectory())
					rm(file);
			}
		dir.delete();
	}

	public static void main(String[] args) {
		rmOld("C:\\Program Files\\eclipse\\plugins");
		rmOld("C:\\Program Files\\eclipse\\features");
	}
}