📄 replacewordsbyresource.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 + -