파일 처리하기

이재홍 http://www.pyrasis.com 2014.12.17 ~ 2015.02.07

Go 언어에서는 다양한 방법으로 파일을 읽고 쓸 수 있습니다. 먼저 os 패키지를 이용하여 파일을 처리해보겠습니다.

파일 쓰기

다음은 os 패키지에서 제공하는 파일 함수와 파일 쓰기 함수입니다.

  • func Create(name string) (file *File, err error): 기존 파일을 열거나 새 파일을 생성
  • func (f *File) Close() error: 열린 파일을 닫음
  • func (f *File) Write(b []byte) (n int, err error): 파일에 값을 씀. 파일에 쓴 데이터의 길이와 에러 값을 리턴

hello.txt 파일에 Hello, world! 문자열을 저장해보겠습니다.

package main

import (
	"fmt"
	"os"
)

func main() {
	file, err := os.Create("hello.txt") // hello.txt 파일 생성
	if err != nil {
		fmt.Println(err)
		return
	}
	defer file.Close() // main 함수가 끝나기 직전에 파일을 닫음

	s := "Hello, world!"

	n, err := file.Write([]byte(s)) // s를 []byte 바이트 슬라이스로 변환, s를 파일에 저장
	if err != nil {
		fmt.Println(err)
		return
	}

	fmt.Println(n, "바이트 저장 완료")
}

실행 결과

13 바이트 저장 완료

os.Create 함수로 hello.txt 파일을 먼저 생성합니다(hello.txt 파일이 이미 있으면 파일을 열고 값을 덮어씁니다). 여기서 파일 생성에 성공하면 file 인스턴스가 리턴됩니다. 그리고 파일을 열었으면 항상 file.Close 함수로 닫아줍니다(파일을 닫을 때 지연 호출 defer를 사용하면 편리합니다. 코드상에서는 파일을 연 즉시 파일을 닫는 코드가 나오므로 파일 닫기를 까먹는 일이 줄어듭니다).

file 인스턴스에서 Write 함수를 사용하면 []byte 슬라이스의 내용을 파일에 저장할 수 있습니다. 여기서는 문자열 변수 s[]byte 형식으로 변환하여 Hello, world!를 파일에 저장했습니다.


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.

Published

01 June 2015