先读取文件,把文件内容保存在String 或 byte[] 中,再把你要删除的内容找出来删掉,然后重新组合String 或 byte[] 。把原来的文件删除,新建同名文件,把内容写如即可。

解决方案 »

  1.   

    用数组information存放readLine()后的信息
    之后开始处理:
    定义两个int:startDelete=-1,endDelete=-1
    和一个表示数组行数的int:row
    每一行row++,然后用java.util.StringTokenizer(好像是这样写)按空格分开把第一个值与002匹配,设置startDelete=row,然后再与003匹配,如果startDelete>0就设置endDelete=row
    好了可以break了,用两个for(int i=0;i<startDelete;i++)和for(int i=endDelete;i<information.length;i++)就可以生成一个新数组写回文件就OK了。
      

  2.   

    Eraserpro(Eraser):
    这儿有一个临界值的问题,如果002下面是001(我是说数字)的话,这样就会出错.(你可以看看上面的例子)
      

  3.   

    应该不会吧,你用String的equals方法匹配应该不会错呀!
    我的方法是每遇到一个新的002就更新startDelete,然后再继续搜003,要么我先试试再回复
      

  4.   

    试试这个程序:
    import java.util.*;
    import java.io.*;public class deal
    {
    String[] information; //存放文件内容
    int startDelete=-1,endDelete=-1,end; //startDelete是开始删除行,endDelete结束删除行,end是最后的endDelete
    int row; //information的行数
    int tempRow; //用于循环查找startDelete和endDelete
    PrintWriter pw; //输出流  public deal(String filename,String outfile,String startString,String endString)
      //filename,outfile是输入输出文件,startString,endString是你说的"002","003"
      {
        try{
          File f=new File(filename);
          BufferedReader br=new BufferedReader(new FileReader(f));
          int row=0;
          information=new String[(int)f.length()];
          String s;
          while((s=br.readLine())!=null)
            information[row++]=s; //不解释了,就是把filename读入information
          br.close();
          pw=new PrintWriter(new FileOutputStream(outfile));
          while(tempRow!=-1)
          {
            for (int i=tempRow;i<row;i++) //tempRow初始为0,用于记录前一次查找的最后一行
            {
              StringTokenizer st=new StringTokenizer(information[i]," "); //以" "隔开内容
              if (st.hasMoreTokens())
              {
                String no=st.nextToken();
                startDelete=(no.equals(startString))?(i):(startDelete); //找到开始行
                endDelete=(no.equals(endString) && startDelete!=-1)?(i):(endDelete); //找到结束行,注意条件
                if (endDelete!=-1) //找到一种情况
                {
                  for (int j=tempRow;j<=startDelete;j++)
                    pw.println(information[j]); //写入
                  tempRow=endDelete; //tempRow设为最后一行
                  end=endDelete; //end设为最后一行
                  startDelete=-1; //重置开始和结束行
                  endDelete=-1;
                  break; //跳出循环,开始第二次匹配
                }
              }
              if (i==row-1 && endDelete==-1) //查完了,结束while循环
                tempRow=-1;
            }
          }
          for (int j=end;j<row;j++) //把剩余的补上
            pw.println(information[j]);
          pw.flush(); //写文件
        }catch(Exception e){System.out.println(e);}
      }public static void main(String args[])
    {
      deal d=new deal(args[0],args[1],args[2],args[3]); //参数的作用见构造函数
    }
    }
    用两次java deal in.txt out.txt 002 003
          java deal out.txt out.txt 004 005
    那out.txt就是你需要得到的文件
    好像没出问题