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();
}
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.