저작권 안내
- 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
- 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.
파일 처리하기
이재홍 http://www.pyrasis.com 2014.12.17 ~ 2015.02.07
파일 읽기
다음은 os 패키지에서 제공하는 파일 열기, 파일 정보, 파일 읽기 함수입니다.
- func Open(name string) (file *File, err error): 파일 열기
- func (f *File) Stat() (fi FileInfo, err error): 파일의 정보를 얻어옴
- func (f *File) Read(b []byte) (n int, err error): 파일에서 값을 읽음. 파일에서 읽은 데이터의 길이와 에러 값을 리턴
이제 파일을 읽어보겠습니다.
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Open("hello.txt") // hello.txt 파일을 열기
if err != nil {
fmt.Println(err)
return
}
defer file.Close() // main 함수가 끝나기 직전에 파일을 닫음
fi, err := file.Stat() // 파일 정보를 가져오기
if err != nil {
fmt.Println(err)
return
}
var data = make([]byte, fi.Size()) // 파일 크기만큼 바이트 슬라이스 생성
n, err := file.Read(data) // 파일의 내용을 읽어서 바이트 슬라이스에 저장
if err != nil {
fmt.Println(err)
return
}
fmt.Println(n, "바이트 읽기 완료")
fmt.Println(string(data)) // 문자열로 변환하여 data의 내용 출력
}
실행 결과
13 바이트 읽기 완료
Hello, world!
os.Open 함수로 hello.txt 파일을 엽니다(hello.txt 파일이 없으면 에러가 발생합니다). 여기서 파일 열기에 성공하면 file 인스턴스가 리턴됩니다. 단, os.Open 함수로 파일을 열었을 때는 읽기만 할 수 있습니다.
파일을 읽기 전에 파일 크기를 구해와야 하므로 file.Stat 함수로 파일의 정보를 얻어옵니다. 그리고 fi.Size 함수로 파일 크기만큼 슬라이스를 생성합니다. 마지막으로 file.Read 함수에 슬라이스를 넣으면 파일의 내용을 읽어올 수 있습니다.
저작권 안내
이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.- 블로그, 게시판 등에 퍼가는 것을 금지합니다.
- 비공개 포스트에 퍼가는 것을 금지합니다.
- 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
- 링크 및 SNS 공유는 허용합니다.