⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 replacewordsbyresource.java

📁 替换jsp中的中文为sturts中的bundle
💻 JAVA
字号:
package com.pengjj.app;

import java.io.File;
import java.io.FileInputStream;
import java.math.BigDecimal;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.eclipse.swt.widgets.Display;

import com.pengjj.util.FileUtil;
import com.pengjj.util.PengjjLog;

public class ReplaceWordsByResource extends PengjjLog{
	/**
	 * 正则式
	 */
	private String reg;
	/**
	 * 用来替换的字符串
	 */
	private String sReplace;
	
	private String sBundle;
	private String sMessage;

	/**
	 * jsp文件的总数
	 */
	private int iJspNum;
	private int iJspNumFinish;
	/**
	 * 资源文件的总数
	 */
	private int iResourceNum;
	private int iResourceNumFinish;
	private String finish;
	/**
	 * 是否查找到需要的内容
	 */
	private boolean isFind;
	private GetAllFileToResource getAllFileToResource;
	public ReplaceWordsByResource() {
	}
	public ReplaceWordsByResource(GetAllFileToResource getAllFileToResource) {
		this.getAllFileToResource = getAllFileToResource;
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//资源文件名称,针对每一个资源文件运行一次
		String sFileNameResourse = "e:/resources";
		//要代换的jsp文件的目录
		String sDirectoryJsp = "e:/flow";
		//String fileName = "e:/churuku.properties";
		String sFileType = ".jsp";
//		GetAllFileToResource getAllFileToResource =  new GetAllFileToResource();
//		ReplaceWordsByResource replace = new ReplaceWordsByResource(getAllFileToResource);
//		File fileJsp = new File(sDirectoryJsp);
//		File fileResource = new File(sFileNameResourse);
//		String temp =  fileResource.getName();
//		temp = temp.replaceAll("resources_","");
//		temp = temp.replaceAll("_zh_CN.properties","");
//		sBunddle = temp;
//		System.out.println(temp);
//		replace.getResoureFile(fileJsp,fileResource,sFileType,replace,null,);
	}
	public void isFinish(File fileJsp, File fileResource, String sFileType) {
		finish = "begin";
		setFinish();
		this.getJspNum();
		this.getIResourceNum();
		getResoureFile(fileJsp, fileResource, sFileType);
		finish =  "end";
		setFinish();
	}
	/**
	 * 对资源文件进行循环
	 * @param fileJsp
	 * @param fileResource
	 * @param sFileType
	 * @param replace
	 */
	public void getResoureFile(File fileJsp, File fileResource,String sFileType) {
		if (fileResource.exists()) {
			if (fileResource.isDirectory()) {
				File[] files = fileResource.listFiles();
				for (int i = 0; i < files.length; i++) {
					getResoureFile(fileJsp, files[i], sFileType);
				}
			} else if (fileResource.isFile()
					&& FileUtil.validate(fileResource, ".properties")) {
				log.debug("¥¥¥¥¥¥¥¥¥¥对于资源文件中的key,开始替换所有的jsp文件,资源文件为:"
						+ fileResource.getPath() + "¥¥¥¥¥¥¥¥¥¥");
				String temp = fileResource.getName();
				temp = temp.replaceAll("resources_", "");
				temp = temp.replaceAll("_zh_CN.properties", "");
				sBundle = temp;
				iResourceNumFinish++;				
				iJspNumFinish=0;
				replaceByResource(fileJsp, fileResource.getPath(),
						sFileType);
				setIResourceNumFinish();
			}
		}
	}
	/**
	 * 替换目录下的所有文件
	 * @param file 文件路径
	 * @param resourceName 资源文件名称
	 */
	private void replaceByResource(File file, String resourceName,
			String sFileType) {
		if (file.exists()) {
			if (file.isDirectory()) {
				File[] files = file.listFiles();
				for (int i = 0; i < files.length; i++) {
					replaceByResource(files[i], resourceName, sFileType);
				}
			} else if (file.isFile() && FileUtil.validate(file, sFileType)) {
				try {
					//iResourceNumFinish = 
					iJspNumFinish++;
//					System.out.println("jsp---"+iJspNum);
//					System.out.println("resourece----"+iResourceNum);
//					System.out.println("jsp---"+iJspNumFinish);
//					System.out.println("resourece----"+iResourceNumFinish);
					sMessage="正在进行的资源文件为:" + resourceName+",完成:" + devide(iResourceNumFinish, iResourceNum)
					+ "%,\n\r开始查找替换jsp文件:" + file.getPath()+",完成:" + devide(iJspNumFinish,iJspNum)
					+ "%";
					//log.debug(resourceProcess);
					setText(sMessage);
					convertResource(resourceName, file.getPath(), file
							.getPath());
				} catch (Exception e) {
					e.printStackTrace();
					log.error("读取文件时发生错误,文件的目录为(replaceByResource File have some error):"
									+ file.getPath());
				}
			}
		}
	}
	/**
	 * 替换jsp文件中的汉字为对应资源中的key
	 * 
	 * @param resourceName
	 *            资源文件名称
	 * @param jspName
	 *            jsp来源文件名称
	 * @param newFile
	 *            新生成的jsp文件名称
	 * @throws Exception 
	 */
	public void convertResource(String resourceName, String jspName,
			String newFile) throws Exception {
		// replaceStr = new StringBuffer();
		log.debug("××××××××××××××××××××替换文件开始:" + jspName + "××××××××××××××××");
		// 将jsp中的中文字符读入到缓存中,对其中的中文进行替换
		String result = FileUtil.getFileContent(jspName);
		// 将资源文件中的key与value存入Properties中
		Properties prop = new Properties();
		FileInputStream fis = new FileInputStream(resourceName);
		prop.load(fis);
		Enumeration enu = prop.keys();
		String sKey = "";
		String sValue = "";
		// 根据value对文件中的相关中文替换为需要替换成为的对象
		while (enu.hasMoreElements()) {
			sKey = (String) enu.nextElement();
			sValue = (String) prop.get(sKey);
			if (sKey != null && sKey.trim().length() > 0 && sValue != null
					&& sValue.trim().length() > 0) {
				result = replaceContent(result, sValue, sKey);
			}
		}
		// 将改变的content保存到文件中,如果没有改变,就不保存
		if(isFind){
			FileUtil.writeFile(newFile, result);
		}
		prop.clear();
		fis.close();
		log.debug("--------------------替换文件完成:" + jspName
				+ "----------------\r\n");
	}
	
	/**
	 * 将properties文件中的value存入map中的key中,将key放入value中
	 * 
	 * @param fileName
	 *            文件名称
	 * @return HashMap hashMap
	 * @throws Exception
	 *             读取properties文件出错
	 */
	public static HashMap getMap(String fileName) throws Exception{
		HashMap hashMap=new HashMap();
		Properties prop = new Properties();
        FileInputStream fis = new FileInputStream(fileName);
        prop.load(fis);
        Enumeration enu = prop.keys();
        String sKey = "";
        while(enu.hasMoreElements()){
        	sKey = (String)enu.nextElement();
        	hashMap.put(prop.get(sKey),sKey);
        }
        fis.close();
		return hashMap;
	}
	/**
	 * 将文件中的回车或者换行符号替换为"="
	 * @param fileName
	 * @return
	 */
	public String replaceByEqual(String str){
		return str.replaceAll("\r\n","=");		
	}
	/**
	 * 将str替换为key
	 * @param fileStr 文件字符串 
	 * @param sValue 需要被替换的字符,资源文件中的value
	 * @param key 资源文件中的key
	 * @return 被替换过的文件字符串
	 */
	public String replaceContent(String fileStr, String sValue, String sKey) {
		// PENGJJ_TODO 过滤某些不需要替换的字符,如:displaytag中的汉字
		// 目前的规则是替换的类型为: " >中文< ";其中尖括号前后可以换行或者空格
		reg = ">\r*\n*\\s*(" + sValue + ")\\s*\r*\n*<";
		// PENGJJ_TODO bundle=?需要进一步修改
		sReplace = "><bean:message key=\"" + sKey + "\" bundle=\"" + sBundle
				+ "\"/><";
		try {
			Pattern pattern = Pattern.compile(reg);
			Matcher match = pattern.matcher(fileStr);
			isFind=false;
			if (match.find()) {
				isFind=true;
				log.debug("\"" + sValue + "\"" + " ------被替换为----- "
								+ sReplace);
			}else{
				fileStr = match.replaceAll(sReplace);
			}
		} catch (Exception e) {
			log.error("replaceContent 替换失败,the key is" + sKey);
			e.printStackTrace();
		}
		return fileStr;
	}
	/**
     * 插入文本
     */
    private void setText(final String str) {
        Display.getDefault().syncExec(new Runnable() {
            public void run() {
            	getAllFileToResource.setResourceProcess(str);
            }
        });
    }
    private void getJspNum() {
        Display.getDefault().syncExec(new Runnable() {
            public void run() {
            	iJspNum=getAllFileToResource.getJspNum();
            }
        });
    }
    private void getIResourceNum() {
        Display.getDefault().syncExec(new Runnable() {
            public void run() {
            	iResourceNum=getAllFileToResource.getIResourceNum();
            }
        });
    }
    private void setIResourceNumFinish() {
        Display.getDefault().syncExec(new Runnable() {
            public void run() {
            	getAllFileToResource.setIResourceNumFinish(iResourceNumFinish);
            }
        });
    }
    private void setFinish() {
        Display.getDefault().syncExec(new Runnable() {
            public void run() {
            	getAllFileToResource.setFinish(finish);
            }
        });
    }
    /**
     * 得到百分比
     * @param a
     * @param b
     * @return
     */
    private String devide(int a,int b){
    	String result = "";
    	BigDecimal bA = new BigDecimal(a);
    	bA = bA.multiply(new BigDecimal("100")).divide(new BigDecimal(b),5);
    	bA.setScale(3,5);
    	result = bA.toString();
    	return result;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -