源码暂时不放,我再网上保存的一个网页,现在写了一个java类,按行读取,读到<img,就把这行些到test.html中,可是本应该有100多图片的,可是test.html中只有68行,我就修改了下源代码,在方法开始 int k=0;每写一行就k++;debug时显示k是加到100多了,可是打开文件还是只有68行,真邪门了,我再写字符串后都加入的out.flush();所以应该不是缓冲的问题,而且debug时,k确实加到100多,也就是说确实写了100多行,可是文件里为什么只有68行呢???真心疑惑,撞鬼了???
请高手给解释下,需要的话再发源码。
请高手给解释下,需要的话再发源码。
如果是那样的话,就看不出来问题了,不行来个代码看看
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;public class IgTest {
public int stry(File jf) throws Exception{
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("d:\\test.html"),"gb2312"));
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(jf)));
String s=null;
String ss=null;
int i=0;
int j=0;
int k=0;
while(in.readLine()!=null){
s=in.readLine();
if(s.contains("<img")){
i = s.indexOf("<img");
j = s.indexOf("/>");
ss = s.substring(i,j);
out.write(ss);
out.write("<br/>");
out.newLine();
out.flush();
k++;
}
}
out.flush();
out.close();
return k;
}
public static void main(String[] args) throws Exception {
File js = new File("d:\\dei.txt");
int k = new IgTest().stry(js);
System.out.println(k);
}}
这就是源代码,这是修改后的,新加入k方便看写了多少行,原先是在调用的方法里写的,现在改成让方法吧写了多少行返回打印来,应该没影响。
s=in.readLine();这样写至少会少掉一半的内容,改成这样String temp = null;while((temp=in.readLine)!=null){
//........................
}
in.readLine会使指针下移的
6L正解
+1while(in.readLine()!=null){ //读了奇数行
s=in.readLine();//读取偶数行,每次处理的都是偶数行的数据
不过问题又来了,我写了两个文件,一个只读取<img,另一个不仅读取上面的img,还读取<a,肯定不止131个了,可是结果还是131行。而且有时调试会报如下错误,有时正常。我用的是weblogic8.1上带的jdk1.4环境。
131
131
ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2
JDWP exit error AGENT_ERROR_NO_JNI_ENV(183): [../../../src/share/back/util.c:820]
谢各位大虾热心的帮助!