이번 편의 목표: 연체료 한 줄을 텍스트 파일에 쓰고, 그 파일을 다시 읽어 출력합니다.
os.WriteFile은 파일 전체를 바이트로 기록합니다. ReadFile은 전체를 읽습니다. 둘 다 실패하면 error를 돌려줍니다. 14편의 defer는 직접 연 파일을 닫을 때 쓰고, 이 두 함수는 열고 닫는 일을 안에서 끝냅니다.
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이면 정상입니다.
COMMENTS
댓글 0
이 글에 대한 의견이나 질문을 남겨 주세요.
댓글은 구글이나 카카오로 시작한 뒤에 남길 수 있습니다.
등록된 댓글이 없습니다.