[Go] Reading/Writing files in Go

반응형

Go에서 파일 읽기/쓰기에서 대해서 알아보자.

기존에 io/ioutil 패키지를 사용해서 파일 읽기/쓰기를 했을 것이다.

하지만 Go 1.16 부터 io/ioutil 패키지가 deprecated 되었다.

해당 패키지에서 제공하던 모든 기능이 다른 패키지로 이동되었다.

 

 

ioutil.ReadFile() 메소드를 확인해보면 관련해서 다른 패키지를 호출하도록 설명이 되어 있다.

 

 

ioutil.WriteFile() 확인해봐도 마찬지로 다른 패키지를 호출하도록 설명이 되어 있다.

 

io/ioutil 패키지에 있던 함수들이 이동한 곳은 아래와 같다.

  • Discard => io.Discard
  • NopCloser => io.NopCloser
  • ReadAll => io.ReadAll
  • ReadDir => os.ReadDir (note: returns a slice of os.DirEntry rather than a slice of fs.FileInfo)
  • ReadFile => os.ReadFile
  • TempDir => os.MkdirTemp
  • TempFile => os.CreateTemp
  • WriteFile => os.WriteFile

 

 

 

Reading Files

/path/my/example.txt

line1
line2
line3

 

Code:

package main

import (
    "fmt"
    "os"
)

func main() {
    data, err := os.ReadFile("/path/my/example.txt")
    if err != nil {
        fmt.Println(err)
    }

    fmt.Print(string(data))
}

 

Output:

line1
line2
line3

 

 

 

Writing Files

Code:

package main

import (
    "fmt"
    "os"
)

func main() {
    data := []byte("line4\nline5")
    fileName := "/path/my/exmaple2.txt"

    err := os.WriteFile(fileName, data, 0644)

    if err != nil {
        fmt.Println(err)
    }
}

 

Output: /path/my/exmaple2.txt

line4
line5

 

 

 

참고