package Replacer;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import CenterHandler.FileProperties;
import CenterHandler.TraverseFile;
import Searcher.FileStream;
public class ReplaceFromfile extends TraverseFile{
private FileInputStream fis2=null;
private FileOutputStream fos2=null;
private BufferedReader br2=null;
private BufferedWriter bw2=null;
private String[] tempfile={"zh","en"};
private boolean isSameFile=false;
private int line=0;
private FileStream stream=FileStream.getSinleFileStream();
private BufferedReader br3=null;
public void repalceFrom(File file){
System.out.println("读取资源文件..."+file);
stream.initReplaceStream(file);
ReadThree();
}
/*
* 读取未国际化三行信息(路径,行号,内容)
*/
public void ReadThree(){
try {
while(true){
String str=stream.getBr().readLine();
System.out.println(str);
if(str==null) {
replace("jiesu","jiesu","jiesu");
break;}
String number=stream.getBr().readLine();
System.out.println(number);
String text=stream.getBr().readLine();
System.out.println(text);
String files[]=str.split("\\$\\:\\$");
String numbers[]=number.split("\\$\\:\\$");
String texts[]=text.split("\\$\\:\\$");
if(files[0].equals("文件路径")){str=files[1].trim();}
if(numbers[0].equals("行号")){number=numbers[1].trim();}
if(texts[0].equals("内容")) {text=texts[1];}
stream.getBr().readLine();
stream.getBr().readLine();
System.out.println("读取三行信息: "+str+" "+number+" "+text);
File ff=new File(str);
if(!ff.exists()){
throw new FileNotFoundException(str);
}
replace(str,number,text);//处理
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void replace(String file,String number,String text){
/*
* 判断是否是同一文件
*/
if(!file.equals(tempfile[0])){
tempfile[1]=tempfile[0];
tempfile[0]=file;
System.out.println("不是同一个文件: "+"tempfile "+tempfile[1]+" 处理的文件 "+tempfile[0]);
isSameFile=false;
}else{
isSameFile=true;
}
/*
* 写入上一个文件没有写完的信息
*/
if(!isSameFile&&br3!=null){
System.out.println("正在写入上一个未写完文件....");
while(true){
String s;
try {
if(br2!=null&&br2.ready()){
s = br2.readLine();
if(s==null){
break;
};
bw2.write(s+'\n');
bw2.flush();
}else{
break;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/*
* 判断是否所以文件都处理完毕
*/
if(file.equals("jiesu")&&number.equals("jiesu")&&text.equals("jiesu")){
System.out.println("处理完毕。。。");
return;
}
int num=Integer.parseInt(number);
/*
* 当是一个新文件时,初始化信息
*/
try {
if(!isSameFile){
System.out.println("初始化新文件.."+tempfile[0]);
line=0;
if(br2!=null){br2.close();}
if(bw2!=null){bw2.close();}
if(fis2!=null) fis2.close();
if(fos2!=null) fos2.close();
File fil= new File(tempfile[1].toString());
fil.delete();
new File(tempfile[1].toString()+".bak").renameTo(fil);
System.out.println("上一个文件全部完成...."+tempfile[1]);
File myfile=new File(file);
fis2=new FileInputStream(myfile);
fos2=new FileOutputStream(file+".bak");
br2=new BufferedReader(new InputStreamReader(fis2,FileProperties.get("code")));
br3=br2;
bw2=new BufferedWriter(new OutputStreamWriter(fos2,FileProperties.get("code")));
}
String st="";
/*
* 执行读写操作
*/
while((st=br2.readLine())!=null){
line++;
if(line==num){
bw2.write(text+'\n');
bw2.flush();
break;
}else{
bw2.write(st+'\n');
bw2.flush();
}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
}
}
@Override
public void nextDo(File file) {
// TODO Auto-generated method stub
repalceFrom(file);
try {
if(br2!=null){br2.close();}
if(bw2!=null){bw2.close();}
if(fis2!=null) fis2.close();
if(fos2!=null) fos2.close();
File fil= new File(tempfile[1].toString());
fil.delete();
new File(tempfile[1].toString()+".bak").renameTo(fil);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
做项目时,要在原有项目的基础增加国际化版本,查找和替换中文成了必做的工作,为了加快工作速度,所有的重复性工作都交给程序来处理,自己只做核心工作,经过自己的编码和实践应用,写了一套配合自己工作的程序,要求是可配置性和扩展性的,具体功能有: 1 根据目录查找所有文件中的中文并输入到文件, 2 根据目录查找所有文件中的unicode并输入到文件, 3 根据目录查找所有指定的字符串, 4 实现condition接口编写自己要查找 的内容 5 根据目录替换所有文件指定内容, 6 根据指定格式的文件替换文件中指定的内容,(和1配合使用) 7 condition.xml 配置要处理的类,改类在searcher.condition下 8 fileproperties.porperties配置各种参数。 还有其它功能在扩展中,也请大家帮忙扩展,有什么问题请指正一下。。。。
资源推荐
资源详情
资源评论
收起资源包目录
java 可配置式 批量 查找 替换工具-MYFinder.rar (45个子文件)
MYFinder
.project 384B
bin
Replacer
doReplace.class 3KB
ReplaceFromfile.class 5KB
FileProperties.properties 192B
Interface
Test.class 726B
condition.xml 174B
Searcher
conditions
FindDate.class 2KB
FileCompare.class 2KB
Findunicode.class 2KB
FindString.class 2KB
WriteI18nFile.class 3KB
FindChinese.class 2KB
FileStream.class 3KB
Dofile.class 518B
DoInFile.class 1KB
CenterHandler
TraverseFile.class 2KB
FileOperationSystemIml.class 2KB
DataObject.class 506B
FileProperties.class 2KB
FileOperationSystem.class 398B
Condition.class 172B
XmlParse.class 3KB
src
Replacer
ReplaceFromfile.java 5KB
doReplace.java 2KB
FileProperties.properties 171B
Interface
Test.java 638B
FileProperties.properties.bak 189B
condition.xml 174B
Searcher
DoInFile.java 971B
conditions
FindDate.java 2KB
FindChinese.java 2KB
Findunicode.java 1KB
FileCompare.java 1KB
WriteI18nFile.java 2KB
FindString.java 921B
FileStream.java 3KB
Dofile.java 292B
CenterHandler
FileOperationSystemIml.java 2KB
TraverseFile.java 1KB
FileOperationSystem.java 447B
XmlParse.java 2KB
Condition.java 144B
DataObject.java 205B
FileProperties.java 1KB
.classpath 232B
共 45 条
- 1
资源评论
- zhzhgvn2014-02-07学习参考下 以此为基础 自己重写了一个
tianzizhi
- 粉丝: 10
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功