RosettaCodeData/Task/Globally-replace-text-in-several-files/Rust/globally-replace-text-in-several-files.rust
2023-07-01 13:44:08 -04:00

46 lines
1.3 KiB
Text

//! Author: Rahul Sharma
//! Github: <https://github.com/creativcoder>
use std::fs::File;
use std::fs::OpenOptions;
use std::io::BufRead;
use std::io::BufReader;
use std::io::BufWriter;
use std::io::Write;
fn main() {
// opens file for writing replaced lines
let out_fd = OpenOptions::new()
.write(true)
.create(true)
.open("resources/output.txt");
// defining a closure write_line
let write_line = |line: &str| match out_fd {
Ok(ref v) => {
let mut writer = BufWriter::new(v);
writer.write_all(line.as_bytes()).unwrap();
}
Err(ref e) => {
println!("Error:{}", e);
}
};
// read input file
match File::open("resources/paragraph.txt") {
Ok(handle) => {
let mut reader = BufReader::new(handle);
let mut line = String::new();
// read the first line
reader.read_line(&mut line).unwrap();
// loop until line end
while line.trim() != "" {
let mut replaced_line = line.trim().replace("Goodbye London!", "Hello New York!");
replaced_line += "\n";
write_line(&replaced_line[..]);
line.clear();
reader.read_line(&mut line).unwrap();
}
}
Err(e) => println!("Error:{}", e),
}
}