批量修改相似文档,在文档中添加一行,(处理大量小文件)
package edu.btbu.cs714.webgl.three;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ChangeAPI {
private Pattern pattern = null;;
public ChangeAPI(){
pattern = Pattern.compile("\\s*\\[link:https:.*\\.js\\]");
}
public void updateFile(File file) throws IOException{
if(file.getName().endsWith(".html")){
//file. new InputStreamReader(in,"utf-8")
BufferedReader br = new BufferedReader( new InputStreamReader(new FileInputStream(file),"utf-8"));
StringBuffer sb =new StringBuffer();
String tempString = null;
while((tempString=br.readLine())!=null){
//System.out.println(tempString);
Matcher matcher = pattern.matcher(tempString);
sb.append(tempString+'\n');
while(matcher.find()){
tempString = "<br/>[link:../../../src/[path].js src/[path].js]\n";//添加内容
sb.append(tempString);
}
}
br.close();
//System.out.println(sb);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"utf-8"));
bw.write(sb.toString());
bw.close();
}else if(file.isDirectory()){
for(File f :file.listFiles()){
updateFile(f);
}
}
}
public static void main(String []args) throws IOException{
ChangeAPI change = new ChangeAPI();
change.updateFile(new File("F:\\Work\\docs\\api"));
}
}
其中乱码问题解决:
为InputStreamReader、OutputStreamReader设置编码格式utf-8:
BufferedReader br = new BufferedReader( new InputStreamReader(new FileInputStream(file),"utf-8"));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"utf-8"));