//你怎么把main写到一个内部静态类里去了呢?JVM找不到那个main的。
//写出来就可以了。import java.io.*;public class GrepReader extends BufferedReader
{
String pattern;

public GrepReader(Reader in,String pattern)
{
super(in);
this.pattern=pattern;
}

public final String readLine() throws IOException
{
String line;
do
{
line=super.readLine();
}while((line!=null)&&line.indexOf(pattern)==-1);

return line;
}


public static void main(String args[])
{

String from="D:/e/q.txt";
String patt="H";

try{
//if(args.length!=2) throw new IllegalArgumentException("Wrong number of args");

GrepReader in=new GrepReader(new FileReader(from),patt);
String line;

while((line=in.readLine())!=null) System.out.println(line);
in.close();
}
catch(Exception e){
System.err.println(e);
System.out.println("Usage:java GrepReader$Test"+"<pattern><file>");
}
}

}

解决方案 »

  1.   

    楼上说的对~ 
    import java.io.*;public class GrepReader extends BufferedReader
    {
    String pattern;

    public GrepReader(Reader in,String pattern)
    {
    super(in);
    this.pattern=pattern;
    }

    public final String readLine() throws IOException
    {
    String line;
    do
    {
    line=super.readLine();
    }while((line!=null)&&line.indexOf(pattern)==-1);

    return line;
    }


    public static void main(String args[])
    {

    String from="D:/e/q.txt";
    String patt="H";

    try{
    //if(args.length!=2) throw new IllegalArgumentException("Wrong number of args");

    GrepReader in=new GrepReader(new FileReader(from),patt);
    String line;

    while((line=in.readLine())!=null) System.out.println(line);
    in.close();
    }
    catch(Exception e){
    System.err.println(e);
    System.out.println("Usage:java GrepReader$Test"+"<pattern><file>");
    }
    }

    }