求教

Trainsp0tting 2006-04-17 10:04:52
最近用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);
}
}
...全文
128 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
laughsmile 2006-04-19
  • 打赏
  • 举报
回复
我的意思是你确认一下,是否有些文件内容可以匹配"<div[.]*</div>",有些不能匹配.
btb368 2006-04-19
  • 打赏
  • 举报
回复
sb = sb.append(append).append("\n");把这一句换成
sb = sb.append(append)+"\n";

这一句content = content.replaceAll("<div[.]*</div>", "");
content = content.replaceAll("<div[.]*</div>", " ");//""中间需要加一个空格
Trainsp0tting 2006-04-18
  • 打赏
  • 举报
回复
试过了,输出是正常的,问题可能还是出在那个delDiv方法里,可是我单独用这个方法却没问题,而且就算delDiv有问题,为什么它会处理一部分的文件呢
想不明白
laughsmile 2006-04-18
  • 打赏
  • 举报
回复
把文件名system.out出来试试
你把不能进行置换的文件单独拿出来试试
是否下面没有起作用
content = content.replaceAll("<div[.]*</div>", "");

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧