将java文件开头的package路径进行规整,使包路径正确

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang.StringUtils;

/**
 * 规整java文件开头的package路径
 * 
 * @author zhaigx
 * @date 2013-7-12
 */
public class ConvertPkgPath4j {
	public static List<String> fileList = new ArrayList<String>();

	public static void main(String[] args) {
		test2();
	}

	private static void test2() {
		List arrayList = ConvertPkgPath4j.getListFiles(
				"I:/workspace70/study_test/src/Java实例精通", "java", true);
		process(arrayList);
	}

	private static void process(List arrayList) {
		System.out.println(arrayList);
		int size = arrayList.size();
		String pkgpath = "";
		for (int i = 0; i < size; i++) {
			String file = (String) arrayList.get(i);
			pkgpath = createPkgPath(file);

			String cont = read(new File(file));
			cont = cont.replaceAll("package .*\n", pkgpath);
			write(cont, new File(file));
		}
	}

	/**
	 * 根据文件路径创建package字符串
	 * 
	 * @param file
	 * @return
	 * @author zhaigx
	 * @date 2013-7-12
	 */
	private static String createPkgPath(String file) {
		String fileName = StringUtils.substringAfterLast(file, "\\");
		String pkg = StringUtils.replace(file, "\\", ".");
		pkg = pkg.substring(pkg.indexOf("src") + 4);
		pkg = "package " + StringUtils.remove(pkg, "." + fileName) + ";\n";// java开头的包路径
		return pkg;
	}

	/**
	 * 
	 * @param path
	 *            文件路径
	 * @param suffix
	 *            后缀名
	 * @param isdepth
	 *            是否遍历子目录
	 * @return
	 */
	public static List getListFiles(String path, String suffix, boolean isdepth) {
		File file = new File(path);
		return ConvertPkgPath4j.listFile(file, suffix, isdepth);
	}

	public static List listFile(File f, String suffix, boolean isdepth) {
		// 是目录,同时需要遍历子目录
		if (f.isDirectory() && isdepth == true) {
			File[] t = f.listFiles();
			for (int i = 0; i < t.length; i++) {
				listFile(t[i], suffix, isdepth);
			}
		} else {
			String filePath = f.getAbsolutePath();

			if (suffix != null) {
				int begIndex = filePath.lastIndexOf(".");// 最后一个.(即后缀名前面的.)的索引
				String tempsuffix = "";

				if (begIndex != -1)// 防止是文件但却没有后缀名结束的文件
				{
					tempsuffix = filePath.substring(begIndex + 1,
							filePath.length());
				}

				if (tempsuffix.equals(suffix)) {
					fileList.add(filePath);
				}
			} else {
				// 后缀名为null则为所有文件
				fileList.add(filePath);
			}

		}

		return fileList;
	}

	public static String read(File src) {
		StringBuffer res = new StringBuffer();
		String line = null;
		try {
			BufferedReader reader = new BufferedReader(new FileReader(src));
			while ((line = reader.readLine()) != null) {
				res.append(line + "\n");
			}
			reader.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return res.toString();
	}

	public static boolean write(String cont, File dist) {
		try {
			BufferedWriter writer = new BufferedWriter(new FileWriter(dist));
			writer.write(cont);
			writer.flush();
			writer.close();
			return true;
		} catch (IOException e) {
			e.printStackTrace();
			return false;
		}
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值