// Findreplace.kt (c) Kari Laitinen // http://www.naturalprogramming.com // 2024-02-21 File created. /* Compilation and execution: c:\freeware\kotlinc\bin\kotlinc Findreplace.kt -include-runtime -d RunThis.jar java -jar RunThis.jar */ import java.io.* fun store_text_lines_to_file( given_array_of_text_lines : ArrayList, given_file_name : String ) { try { val output_file = PrintWriter( FileWriter( given_file_name ) ) for ( text_line in given_array_of_text_lines ) { output_file.println( text_line ) } output_file.close() } catch ( caught_io_exception : IOException ) { print( "\n\n Cannot write to file \"" + given_file_name + "\"\n" ) } } fun replace_string_in_file( original_file_name : String, string_to_replace : String, replacement_string : String ) { try { val original_file = BufferedReader( FileReader( original_file_name ) ) val original_text_lines = ArrayList() val modified_text_lines = ArrayList() var line_counter = 0 var end_of_file_encountered = false while ( end_of_file_encountered == false ) { var text_line_from_file = original_file.readLine() if ( text_line_from_file == null ) { end_of_file_encountered = true } else { line_counter ++ original_text_lines.add( text_line_from_file ) if ( text_line_from_file.contains( string_to_replace ) ) { text_line_from_file = text_line_from_file.replace( string_to_replace, replacement_string ) print( "\n \"" + string_to_replace + "\" was replaced with \"" + replacement_string + "\" on line " + line_counter ) ; } modified_text_lines.add( text_line_from_file ) } } original_file.close() val backup_file_name = original_file_name + ".bak" store_text_lines_to_file( original_text_lines, backup_file_name ) store_text_lines_to_file( modified_text_lines, original_file_name ) } catch ( caught_file_not_found_exception : FileNotFoundException ) { print( "\n Cannot open \"" + original_file_name + "\"") } catch ( caught_io_exception : IOException ) { print( "\n Error in reading " + original_file_name ) } } fun main( command_line_parameters : Array ) { var file_name_given_by_user : String var string_to_replace : String var replacement_string : String if ( command_line_parameters.size == 3 ) { file_name_given_by_user = command_line_parameters[ 0 ] string_to_replace = command_line_parameters[ 1 ] replacement_string = command_line_parameters[ 2 ] } else { print( "\n This program can replace a string in a " + "\n text file. Give first the file name : " ) file_name_given_by_user = readLine()!! print( "\n Type in the string to be replaced: " ) string_to_replace = readLine()!! print( "\n Type in the replacement string: " ) replacement_string = readLine()!! } if ( string_to_replace.equals( "" ) || string_to_replace.equals( replacement_string ) ) { print( "\n Cannot replace \"" + string_to_replace + "\" with \"" + replacement_string + "\"\n\n" ) } else { replace_string_in_file( file_name_given_by_user, string_to_replace, replacement_string ) } }