源码暂时不放,我再网上保存的一个网页,现在写了一个java类,按行读取,读到<img,就把这行些到test.html中,可是本应该有100多图片的,可是test.html中只有68行,我就修改了下源代码,在方法开始 int k=0;每写一行就k++;debug时显示k是加到100多了,可是打开文件还是只有68行,真邪门了,我再写字符串后都加入的out.flush();所以应该不是缓冲的问题,而且debug时,k确实加到100多,也就是说确实写了100多行,可是文件里为什么只有68行呢???真心疑惑,撞鬼了???
请高手给解释下,需要的话再发源码。

解决方案 »

  1.   

    刚才没看全,不好意思哈,以前一直遇到没有flush的情况
    如果是那样的话,就看不出来问题了,不行来个代码看看
      

  2.   

    package zhenghe;import java.io.BufferedReader;
    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方便看写了多少行,原先是在调用的方法里写的,现在改成让方法吧写了多少行返回打印来,应该没影响。
      

  3.   

     while(in.readLine()!=null){
      s=in.readLine();这样写至少会少掉一半的内容,改成这样String temp = null;while((temp=in.readLine)!=null){
        //........................
    }
      

  4.   

    =。=
    in.readLine会使指针下移的
    6L正解
      

  5.   


    +1while(in.readLine()!=null){ //读了奇数行
      s=in.readLine();//读取偶数行,每次处理的都是偶数行的数据
      

  6.   

    大意了,修改后显示读取了131行,不是原来的67了,
    不过问题又来了,我写了两个文件,一个只读取<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]
      

  7.   

    发现了,原来是一运行iga.java,实际运行了ig.java,debug时也是,这是为啥啊我明明在iga.java上设置的断点和点的运行和debug啊!
      

  8.   

    失误,原来在main方法里掉错方法了,复制的时候忘记改了,呵呵,
    谢各位大虾热心的帮助!