Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

E11.8 Write a program Find that searches all files specified on the command line

ID: 3585840 • Letter: E

Question

E11.8 Write a program Find that searches all files specified on the command line and prints
out all lines containing a specified word. For example, if you call
java Find ring report.txt address.txt Homework.java
then the program might print
report.txt: has broken up an international ring of DVD bootleggers that
address.txt: Kris Kringle, North Pole
address.txt: Homer Simpson, Springfield
Homework.java: String filename;
The specified word is always the first command line argument.

-----

Below is a program started for you; finish it.

-----

import java.io.File;

import java.io.FileNotFoundException;

import java.util.Scanner;

/**

* Code for E11.8. Searches all files specified on the command line and prints out all lines

containing a specified word.

* @author

*/

public class Find

{

/**

Searches file for a word, prints out all lines containing that word.

@param wordToFind the word to find

@param filename the filename for the file to search

*/

public static void findAndPrint(String wordToFind, String filename)

{

  

}

/**

First argument of the main method should be the word to be searched

For other arguments of the main method, store the file names to be examined

*/

public static void main(String[] args)

{

// call findAndPrint for each text file

}

}

Explanation / Answer

import java.io.BufferReader;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.PrintWriter

public class E11_8
{
public static boolean hasString(String Line,String Pattern)
{
boolean has=false;
String Temp;
for(int i=0;i<(Line.length()-Pattern.length()+1);i++)
{
Temp=Line.substring(i, i+Pattern.length());
if(Temp.equals(Pattern))
{
has=true;
i=Line.length()-Pattern.length()+1;
}
}
return has;
}
static public void main(String arg[]) throws java.io.IOException
{
String Pattern=arg[0];
for(int nFile=1;nFile<arg.length;nFile++)
{
System.out.println("Processing: " + arg[nFile] + "...");
BufferedReader br=new BufferedReader(new FileReader(arg[nFile]));
String line=br.readLine();
if(hasString(line,Pattern))
System.out.println(arg[nFile]+ ":" + line);
while(line!=null)
{
line = br.readLine();
if(hasString(line,Pattern))
System.out.println(arg[nFile]+ ": " + line);
}
br.close();
}
}
}