GO · 파일/IO
파일 I/O & os 패키지
Go의 파일 처리. os, bufio, io 패키지를 활용합니다.
파일/IO중급osbufioReadFileWriteFileScanner
핵심 설명
Go의 파일 처리. os, bufio, io 패키지를 활용합니다.
Go code
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func main() {
// 파일 쓰기
err := os.WriteFile("test.txt",
[]byte("Hello\nGo\nWorld\n"), 0644)
if err != nil { panic(err) }
// 파일 읽기 (전체)
data, err := os.ReadFile("test.txt")
if err != nil { panic(err) }
fmt.Print(string(data))
// bufio로 줄 단위 읽기 (대용량 파일에 적합)
f, err := os.Open("test.txt")
if err != nil { panic(err) }
defer f.Close()
scanner := bufio.NewScanner(f)
lineNum := 0
for scanner.Scan() {
lineNum++
line := scanner.Text()
fmt.Printf("%d: %s\n", lineNum, line)
}
if err := scanner.Err(); err != nil {
fmt.Println("읽기 에러:", err)
}
// 파일 추가 쓰기 (append)
af, err := os.OpenFile("test.txt",
os.O_APPEND|os.O_WRONLY, 0644)
if err != nil { panic(err) }
defer af.Close()
fmt.Fprintln(af, "추가된 줄")
// strings.NewReader — 문자열을 io.Reader로
r := strings.NewReader("hello world")
bufReader := bufio.NewReader(r)
word, _ := bufReader.ReadString(' ')
fmt.Printf("첫 단어: %q
", strings.TrimSpace(word))
// 환경 변수
home := os.Getenv("HOME")
fmt.Println("홈 디렉토리:", home)
// 임시 파일
tmp, err := os.CreateTemp("", "myapp-*.txt")
if err != nil { panic(err) }
defer os.Remove(tmp.Name())
fmt.Println("임시 파일:", tmp.Name())
tmp.Close()
}학습 팁
os.ReadFile()은 파일 전체를 메모리에 올립니다. 대용량 파일은 bufio.Scanner로 스트리밍 처리하세요.
주의할 점
os.Open()으로 열린 파일은 읽기 전용입니다. 쓰기가 필요하면 os.OpenFile()에 os.O_WRONLY/os.O_RDWR 플래그를 사용하세요.
자주 묻는 질문
파일 I/O & os 패키지란 무엇인가요?
Go의 파일 처리. os , bufio , io 패키지를 활용합니다.
파일 I/O & os 패키지 학습 시 주의할 점은 무엇인가요?
os.Open() 으로 열린 파일은 읽기 전용입니다. 쓰기가 필요하면 os.OpenFile() 에 os.O_WRONLY / os.O_RDWR 플래그를 사용하세요.
Continue Learning
Go 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.