求助:关闭socket的问题
tancz 2009-10-19 11:55:00 我写了个过滤脏字的类,经常抛出java.net.SocketException: Too many open files错误,请高手帮忙看一下
/**源码**/
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.Properties;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
/**
* 过滤脏字实现类
* @author tancz
*
*/
public class KeyWordFilter {
private static Pattern pattern = null;
// 从filtrateWord文件初始化正则表达式字符串
private static void initPattern() throws IOException{
StringBuffer patternBuf = new StringBuffer("");
InputStream in = null;
// in;
try{
in = KeyWordFilter.class.getClassLoader().getResourceAsStream("filtrateWord.txt");
Properties pro = new Properties();
pro.load(in);
in.close();
Enumeration enu = pro.propertyNames();
patternBuf.append("(");
int i=0;
while(enu.hasMoreElements()){
i=i+1;
patternBuf.append((String)enu.nextElement()+"|");
}
patternBuf.deleteCharAt(patternBuf.length()-1);
patternBuf.append(")");
//换成UTF-8 Pattern.CASE_INSENSITIVE常量功能: 忽略大小写匹配
pattern = Pattern.compile(new String(patternBuf.toString().getBytes("ISO-8859-1"), "UTF-8"),Pattern.CASE_INSENSITIVE);
// System.out.println("pattern:"+pattern);
// System.out.println("i=:"+i);
}
catch(IOException ioEx)
{
ioEx.printStackTrace();
}finally{
if(in != null)
in.close();
}
}
public static String doFilter(String str)
{
if(str!=null && !str.equals("")){
try{
initPattern();
}catch(IOException ioEx){
ioEx.printStackTrace();
}
Matcher m = pattern.matcher(str);
str = m.replaceAll("***");
return str;
}else{
return "";
}
}
}