求教
最近用webzip把Sun翻译的中文文档下了回来,可以这个软件把每个网页里都加上了一段信息,是用div标签包围的,我想要把那些东西去去掉,于是写了下面这段程序,可是不知道为什么它总是处理一小部分文件的内容,绝大部分的还是原来的样子,郁闷死了,大家帮忙看看怎么回事
import java.io.*;
/**
* @author Designer
*
*/
public class ProcessHtml {
private final static int SB_LENGTH = 10000;
/**
* 从in中读取文件内容到一个字符串,删除div标记后返回
* @param in 包含需要处理的文件的输入流
* @return
*/
public static String delDiv(BufferedReader in) {
StringBuffer sb = new StringBuffer(SB_LENGTH);
String append;
try {
while((append = in.readLine()) != null) {
sb = sb.append(append).append("\n");
}
} catch (IOException e) {
e.printStackTrace();
}
String content = new String(sb);
content = content.replaceAll("<div[.]*</div>", "");
return content;
}
/**
* 调用delDiv处理file中的标记,然后写回原文件
* @param file 指向需要处理的文件
*/
public static void process(File file) {
BufferedReader in = null;
String resultStr = null;
try {
in = new BufferedReader(new FileReader(file));
resultStr = delDiv(in);
in.close();
} catch (FileNotFoundException e) {
System.err.println("File not Found: " + file);
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
PrintWriter out1 = null;
try {
out1 = new PrintWriter(
new BufferedWriter(new FileWriter(file)));
} catch (IOException e) {
e.printStackTrace();
}
out1.println(resultStr);
out1.close();
}
/**
* 递归遍历一个File数组
* @param files
*/
public static void processAll(File[] files) {
for(File file : files) {
if(file.isDirectory()) {
File[] subFiles = file.listFiles();
processAll(subFiles);
} else {
process(file);
}
}
}
public static void main(String[] args) {
File[] files = new File(".").listFiles();
processAll(files);
}
}