Notice
Recent Posts
Recent Comments
Link
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Archives
Today
Total
관리 메뉴

Code Habit

Go 언어 ) 파일 쓰기 본문

카테고리 없음

Go 언어 ) 파일 쓰기

코드베어 2020. 6. 16. 08:27

golang에서 os 패키지를 사용해 파일 Read/Write를 편하게 할 수 있다. 다음은 사용되는 함수이다.

 

  • func OpenFile(name string, flag int, perm FileMode)(file *File, err error) : 파일 플래그, 파일 모드를 지정하여 파일 열기
  • func (f* File) Close() error : 파일을 닫음
  • func (f* File) Write(b []byte) (n int, err error) : 파일에 값을 씀. 쓴 데이터의 길이와 에러 값 리턴
  • func (f* File) Read() (b []byte)(n int, err error) : 파일의 내용을 읽음. byte형식으로 기록되며 읽은 Count와 에러 값 리턴

 

사용 예제

// main.go
package main
 
import (
    "fmt"
    "os"
)
 
func main() {
    file, err := os.OpenFile("file.txt", os.O_CREATE|os.O_RDWR|os.O_TRUNC /*|os.O_APPEND*/, os.FileMode(0644))
    if err != nil {
        fmt.Println(err)
    }
    defer file.Close()
 
    wData := []byte("Write First")
    count, err := file.Write(wData)
    if err != nil {
        fmt.Println(err)
    }
 
    rData := make([]byte, 4096)
    file.Seek(0, os.SEEK_SET)
    count, err = file.Read(rData)
    if err != nil {
        fmt.Println(err)
    }
 
    fmt.Println("Read Data : ", string(rData), "\r\ncount : ", count)
}

O_RDWR( Read/Write )용으로 'file.txt' 파일을 연다. 만약 파일이 없으면 O_CREATE플래그로 인하여 새로 생성된다. 그리고 파일을 열 때 안의 내용은 다 지워진다.( O_TRUNC ) cf) O_APPEND : 안의 내용 남고 뒤에서 시작 ! 

 

파일에 문자를 쓸때 byte형으로 변환하고 byte형으로 읽어온 후 string으로 변환하여 출력한다. 여기서 주의할 점은 읽기 전 Seek()함수로 읽기/쓰기 위치를 파일의 맨처음으로 옮겨주어야 한다. 만약 빠뜨리면 파일을 제대로 읽어오지 못하고 "EOF" 에러가 발생한다.

 

다음은 파일을 열때(OpenFile) 사용되는 

 

< flag 표 >

os.O_RDONLY : 읽기 전용

os.O_WRONLY : 쓰기 전용

os.O_RDWR : 읽기 쓰기 모드

os.O_APPEND : 뒤에 내용 덧붙임

os.O_CREATE : 파일이 없으면 새로 생성. 있으면 Open

os.O_SYNC : 동기 I/O 사용

os.O_TRUNC : 파일 내용을 삭제