// Search.kt (c) Kari Laitinen // http://www.naturalprogramming.com // 2024-02-21 File created. /* Compilation and execution: c:\freeware\kotlinc\bin\kotlinc Search.kt -include-runtime -d RunThis.jar java -jar RunThis.jar */ import java.io.* fun search_string_in_file( file_name_from_caller : String, string_to_be_searched : String) { try { val file_to_read = BufferedReader( FileReader( file_name_from_caller ) ) print( "\n Searching ... \"" + string_to_be_searched + "\"\n" ) var line_counter = 0 var end_of_file_encountered = false while ( end_of_file_encountered == false ) { val text_line_from_file = file_to_read.readLine() if ( text_line_from_file == null ) { end_of_file_encountered = true } else { line_counter ++ if ( text_line_from_file.contains( string_to_be_searched ) ) { print( "\n String \"" + string_to_be_searched + "\" was found on line " + line_counter ) } } } file_to_read.close() } catch ( caught_file_not_found_exception : FileNotFoundException ) { print( "\n Cannot open \"" + file_name_from_caller + "\"") } catch ( caught_io_exception : IOException ) { print( "\n\n File processing error. \n" ) } } fun main( command_line_parameters : Array ) { if ( command_line_parameters.size == 2 ) { search_string_in_file ( command_line_parameters[ 0 ], command_line_parameters[ 1 ] ) } else { print( "\n This program can search a string in a " + "\n text file. Give first the file name : " ) val file_name_given_by_user = readLine()!! print( "\n Type in the string to be searched: " ) val string_to_be_searched = readLine()!! search_string_in_file( file_name_given_by_user, string_to_be_searched ) } }