파일 읽고 쓰기
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) } }