批量在java程序的前面加入包名

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

import FrequentlyUsedClasses.FileList;

public class AddPackageString {
	static ArrayList<File>  fileList = new ArrayList<File>();
	public static void main(String[] args) {
		File file = new File("D:/DSHWorkSpace/msb/classes/io");
		System.out.println(getAvailablePath(file));
		getFiles("D:/DSHWorkSpace/msb/src");
		getFiles("D:/DSHWorkSpace/ThinkInJava/src");
		for(File fileT:fileList){
			System.out.println(getPackageName(fileT, "src"));
		}
		//copyFileAndAddPackageName(new File("d:\\Noname1.java"));
	}
	/**
	 * @return
	 */
	private static String getAvailablePath(File file){
		return file.getPath().replace('\\', '/');
	}
	/**
	 * @param file
	 * @param root
	 * @return
	 */
	private static String getPackageName(File file,String root){
		int indexOfPackageName = file.getParent().indexOf(root)+root.length()+1;
		String packageName = file.getParent().substring(indexOfPackageName);
		packageName = packageName.replace('\\', '.');
		return packageName;
	}
	/**
	 * 返回某个文件夹下所有的文件
	 * @return
	 */
	public static void getFiles(String path){
		File file = new File(path);
		File[] files = file.listFiles();
		if(files==null){
			return ;
		}
		else{
			for (int i = 0; i < files.length; i++) {
				if(files[i].isDirectory()){
					System.out.println(getAvailablePath(files[i]));
					getFiles(getAvailablePath(files[i]));
				}else if(files[i].getName().lastIndexOf(".java")!=-1)
					//copyFileAndAddPackageName(files[i]);
					fileList.add(files[i]);
					System.out.println(files[i].getAbsolutePath().replace('\\', '/'));
			}
		}
	}
	/**把源文件复制到d:/temp.java中 然后加入package 复制回来
	 * @param file
	 */
	public static void copyFileAndAddPackageName(File file){
		try {
			int b;
			int replaceCounter=0;
			int importStringCounter=0;
			String packageName = getPackageName(file, "src");
			File fileTemp = new File("d:/temp.java");
			FileReader fr = new FileReader(file);
			FileWriter fw = new FileWriter(fileTemp);
			fw.write("package "+packageName+";");
			while((b = fr.read())!=-1){
				fw.write(b);
			}
			fr.close();
			fw.close();
			FileReader fr2 = new FileReader(fileTemp);
			FileWriter fw2 = new FileWriter(file);
			BufferedReader br = new BufferedReader(fr2);
			BufferedWriter bw = new BufferedWriter(fw2);
			String s;
			while((s = br.readLine())!=null){
				System.out.println(s);
				int packageIndex = s.lastIndexOf("package ");
				if(packageIndex!=-1&&importStringCounter==0){
					s = s.substring(packageIndex);
					s= s.substring(s.indexOf(";")+1);
					
					if(replaceCounter==0){
						s = "package "+packageName+"; "+s.trim();
						replaceCounter++;
					}
				}
				
				if(!s.trim().equals(""))
				{
					if(s.indexOf("import ")!=-1)
						importStringCounter++;
					bw.write(s);
					bw.write("\r");
				}
			}
			bw.close();
			br.close();
			fw2.close();
			fr2.close();
			
			
			
		} catch (Exception e) {
			// TODO: handle exception
		}
		
	}
	
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值