파일 읽고 쓰기
Go에서 파일을 읽고 쓰기 위해 Go 표준 패키지인 os 패키지를 사용할 수 있다. os.Open() 함수는 기존 파일을 열 때 사용하고, os.Create() 는 새 파일을 생성할 때 사용한다. Open, Create 함수는 File 타입을 리턴하는데, 이 File 타입의 메서드인 Read(), Write()를 사용하여 파일을 읽고 쓸 수 있다.
아래 예제는 한 파일을 읽어 들여 새 파일에 그대로 출력하는 샘플 코드이다.
package main
import (
"io"
"os"
)
func main() {
// 입력파일 열기
fi, err := os.Open("C:\\temp\\1.txt")
if err != nil {
panic(err)
}
defer fi.Close()
// 출력파일 생성
fo, err := os.Create("C:\\temp\\2.txt")
if err != nil {
panic(err)
}
defer fo.Close()
buff := make([]byte, 1024)
// 루프
for {
// 읽기
cnt, err := fi.Read(buff)
if err != nil && err != io.EOF {
panic(err)
}
// 끝이면 루프 종료
if cnt == 0 {
break
}
// 쓰기
_, err = fo.Write(buff[:cnt])
if err != nil {
panic(err)
}
}
}
Go 표준 패키지인 ioutil 패키지는 I/O 관련한 편리한 유틸러티를 제공하는 패키지이다. 입력 파일이 매우 크지 않은 경우, 이 패키지의 ReadFile, WriteFile 함수를 이용하면 편리하게 파일을 읽고 쓸 수 있다. 아래 예제는 ioutil을 사용하여 파일을 그대로 복사하는 코드이다.
package main
import "io/ioutil"
func main() {
//파일 읽기
bytes, err := ioutil.ReadFile("C:\\temp\\1.txt")
if err != nil {
panic(err)
}
//파일 쓰기
err = ioutil.WriteFile("C:\\temp\\2.txt", bytes, 0)
if err != nil {
panic(err)
}
}