2 qq 24351647 qq_24351647 于 2016.02.29 10:47 提问

Java文本无限增加,死循环的问题?

import java.io.*;
import java.util.regex.*;
/*
代码功能为实现将网页中的用户名及其发表内容摘取出来
*/
public class fileReader {

public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new FileReader("d:/tiezi.txt"));
//tiezi.txt为待处理网页源码
BufferedWriter bw =
new BufferedWriter(new OutputStreamWriter(new FileOutputStream("d:/repalce"),"utf-8"));
//将替换后的源码存入repalce.txt
String line = null;
while((line=br.readLine())!=null){
while(line.contains("<img username=\"")){//用户名开始字符
//标识符<img username="与标识符" class="" src="http中间为用户名
String username = line.substring(line.indexOf("<img username=\""), line.indexOf("\" class=\"\" src=\"http"));
bw.append(username);
bw.append('#');

}
while(line.contains("class=\"d_post_content j_d_post_content clearfix\">")){
//标识符class="d_post_content j_d_post_content clearfix">与标识符
中间为用户发表内容
String usertext = line.substring(line.indexOf("class=\"d_post_content j_d_post_content clearfix\">"), line.indexOf("
"));
bw.append(usertext);
bw.newLine();
//问题:运行程序后出现文本大小一直在增加,多到15G,直至死机
}
}
bw.flush();
bw.close();
br.close();
}
}

2个回答

u013596119
u013596119   Rxr 2016.02.29 10:55

while(line.contains(" //标识符 bw.append(username);
bw.append('#');
}
while(line.contains("class=\"d_post_content j_d_post_content clearfix\">")){
//标识符class="d_post_content j_d_post_content clearfix">与标识符
中间为用户发表内容
String usertext = line.substring(line.indexOf("class=\"d_post_content j_d_post_content clearfix\">"), line.indexOf("
"));

这两个while是死循环吧??为何不直接用if??不知道我有没有理解错代码。。。

qq_24351647
qq_24351647 噢,是吗,我改改试一下,谢谢~
接近 2 年之前 回复
wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.02.29 11:05

外层用while循环读取数据是正确的,内层判断是否包含某个特定字符,应该是条件判断用if才对吧。否则内层循环体没有终止条件,当然是死循环了啊。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!