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

os.WriteFile은 파일 전체를 바이트로 기록합니다. ReadFile은 전체를 읽습니다. 둘 다 실패하면 error를 돌려줍니다. 14편의 defer는 직접 연 파일을 닫을 때 쓰고, 이 두 함수는 열고 닫는 일을 안에서 끝냅니다.

Go
package main

import (
	"fmt"
	"os"
)

func main() {
	err := os.WriteFile("fee.txt", []byte("3,300\n"), 0644)
	if err != nil {
		fmt.Println(err)
		return
	}
	text, err := os.ReadFile("fee.txt")
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Print(string(text))
}

go run . 을 library 폴더에서 실행하면 fee.txt가 생깁니다. 내용은 3,300이고 줄 바꿈이 있습니다. Print는 Println과 달리 줄을 추가하지 않으므로, 화면에도 그 한 줄이 한 번 나옵니다. 0644는 소유자가 읽고 쓸 수 있는 권한입니다. 파일이 이미 있으면 WriteFile이 덮어씁니다.

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

직접 해 보기

기록 바이트를 "0,0\n"으로 바꿔 파일이 0,0 한 줄인지 확인하세요.

해설

WriteFile이 이전 내용을 지우고 새 바이트만 둡니다. 화면 출력도 0,0 한 줄입니다. 두 호출 모두 error가 nil이면 정상입니다.