이번 편의 목표: 연체료 한 줄을 텍스트 파일에 쓰고, 그 파일을 다시 읽어 출력합니다.

std::fs::write는 파일 전체를 바이트로 기록합니다. read_to_string은 전체를 문자열로 읽습니다. 둘 다 실패할 수 있으므로 Result를 돌려줍니다. main 자체가 Result를 돌려주면, 본문의 ?가 오류일 때 프로세스를 오류로 끝냅니다.

Rust
use std::fs;
use std::io;

fn main() -> io::Result<()> {
    fs::write("fee.txt", "3,300\n")?;
    let text = fs::read_to_string("fee.txt")?;
    print!("{text}");
    Ok(())
}

cargo run을 library 폴더에서 실행하면 fee.txt가 생깁니다. 내용은 3,300이고 줄 바꿈이 있습니다. print!는 println!과 달리 줄을 추가하지 않으므로, 화면에도 그 한 줄이 한 번 나옵니다. 파일이 이미 있으면 write가 덮어씁니다.

경로는 실행한 현재 폴더 기준입니다. cargo run의 현재 폴더는 명령을 친 폴더입니다. 20편에서 이 파일 입출력을 제목과 일수 여러 줄로 넓힙니다.

직접 해 보기

기록 문자열을 "0,0\n"으로 바꿔 파일이 0,0 한 줄인지 확인하세요.

해설

write가 이전 내용을 지우고 새 문자열만 둡니다. 화면 출력도 0,0 한 줄입니다. 읽기에 성공하면 Ok(())로 정상 종료합니다.