// SearchManyBetter.java Copyright (c) 2005 Kari Laitinen // http://www.naturalprogramming.com // 2005-06-28 File created. // 2005-06-28 Last modification. // The AND and OR features are not implemented in this program. // A better solution to exercise 14-5. import java.util.* ; import java.io.* ; class SearchManyBetter { static void search_strings_in_file( String file_name_from_caller, String[] strings_to_be_searched ) { try { BufferedReader file_to_read = new BufferedReader( new FileReader( file_name_from_caller ) ) ; int line_counter = 0 ; boolean end_of_file_encountered = false ; while ( end_of_file_encountered == false ) { String text_line_from_file = file_to_read.readLine() ; if ( text_line_from_file == null ) { end_of_file_encountered = true ; } else { line_counter ++ ; for ( int string_index = 0 ; string_index < strings_to_be_searched.length ; string_index ++ ) { String string_to_be_searched = strings_to_be_searched[ string_index ] ; if ( text_line_from_file.indexOf( string_to_be_searched ) != -1 ) { System.out.print( "\n String \"" + string_to_be_searched + "\" was found on line " + line_counter ) ; } } } } file_to_read.close() ; } catch ( FileNotFoundException caught_file_not_found_exception ) { System.out.print( "\n Cannot open file " + file_name_from_caller ) ; } catch ( IOException caught_io_exception ) { System.out.print( "\n\n File processing error. \n" ) ; } } public static void main( String[] command_line_parameters ) { Scanner keyboard = new Scanner( System.in ) ; String[] strings_to_be_searched ; String file_name_given_by_user ; if ( command_line_parameters.length > 1 ) { strings_to_be_searched = new String[ command_line_parameters.length - 1 ] ; for ( int string_index = 0 ; string_index < strings_to_be_searched.length ; string_index ++ ) { strings_to_be_searched[ string_index ] = command_line_parameters[ string_index + 1 ] ; } file_name_given_by_user = command_line_parameters[ 0 ] ; } else { System.out.print( "\n This program can search a String in a " + "\n text file. Give first the file name : " ) ; file_name_given_by_user = keyboard.nextLine() ; System.out.print( "\n Type in the String to be searched: " ) ; String string_to_be_searched = keyboard.nextLine() ; strings_to_be_searched = new String[ 1 ] ; strings_to_be_searched[ 0 ] = string_to_be_searched ; } search_strings_in_file( file_name_given_by_user, strings_to_be_searched ) ; } }