import java.io.*;

class FileSearch 
{   public FileSearch (String source_name, String target)
    {   sourceFile = source_name;
        searchTarget = target;
    }

    public void search ()
    {   // Open file source_name for input on data stream in
        BufferedReader in;
        try 
        {   in = new BufferedReader(new FileReader(sourceFile)); }
        catch (IOException e)
	{   System.out.println("File not found:  " + sourceFile); 
	    return;
        }
	
        String line;
	int n = 1;
	try
	{   for (line = in.readLine(); line != null; line = in.readLine())
	    {   if (line.indexOf(searchTarget) >= 0)
                    System.out.println(sourceFile + " " + n + 
		        ":  " + line);  
	        n++;
	    }
	} catch (IOException e) { }
	try
	{   for(line = in.readLine(); line != null; line = in.readLine())
	        if (line.indexOf(searchTarget) >= 0)
                    System.out.println(sourceFile +":  "+line);
	} catch (IOException e) { }

	// Close the input file
	try { in.close(); } catch (IOException e) { }
    }

    private String sourceFile;
    private String searchTarget;
}

public class FileSearchTest
{   public static void main(String[] args) throws IOException
    {   if (args.length != 2)
            System.err.println("Usage: java FileSearchTest " + 
                    "<file to search> <string to be located>");
        else 
	{   FileSearch f = new FileSearch(args[0],args[1]);
	    f.search();
	}
        System.exit(0);
    }

}
