Go에서 파일을 문자열로 읽기

Musfirah Waseem 2023년6월20일
  1. Go에서 ioutil.ReadFile() 메서드 사용
  2. Go에서 File.Read() 메서드 사용
  3. Go에서 buf.ReadFrom() 메서드 사용
  4. Go에서 strings.Builder 메서드 사용
Go에서 파일을 문자열로 읽기

GoLang은 많은 파일 작업 도구를 제공하며 그 중 하나는 파일을 문자열로 읽는 방법입니다. ioutil.ReadFile(), File.Read(), buf.ReadFrom()strings.Builder는 파일 내용을 끈.

Go에서 ioutil.ReadFile() 메서드 사용

package main

import
(
    "fmt"

    "io/ioutil"
)

func main() {

    inputData := []byte("Hello, World!")

    err := ioutil.WriteFile("File.txt", inputData, 0777)

    Data, err := ioutil.ReadFile("File.txt")

    if err != nil {

        fmt.Println(err)
    }

    fmt.Print(string(Data))

}

출력:

Hello, World!

위의 코드를 사용하면 새 파일을 만들고 데이터를 쓸 수 있습니다. 생성된 파일은 ioutil.ReadFile() 메서드를 사용하여 읽습니다.

Go에서 File.Read() 메서드 사용

package main

import (
    "fmt"

    "io/ioutil"

    "log"

    "os"

    "io"
)

func main() {

    inputData := []byte("Hello, World!")

    err := ioutil.WriteFile("file.txt", inputData, 0777)

    f, err := os.Open("file.txt")

    if err != nil {
        log.Fatalf("Error in reading file: %v", err)
    }

    defer f.Close()

    buf := make([]byte, 1024)

    for {
        n, err := f.Read(buf)

	if err == io.EOF {

		break
	}
	if err != nil {

		fmt.Println(err)

		continue
	}
	if n > 0 {

		fmt.Println(string(buf[:n]))
	}
    }
}

출력:

Hello, World!

위의 코드에서는 파일을 분할하여 읽습니다. 매번 읽고자 하는 버퍼 크기를 지정한 다음 len(buf)만 메모리에 할당됩니다.

그런 다음 각 반복을 통해 파일을 조각으로 읽습니다. 이 방법은 파일 내용이 메모리에 완전히 들어갈 수 없는 대용량 파일에 주로 사용됩니다.

Go에서 buf.ReadFrom() 메서드 사용

package main

import (
  "fmt"

  "io/ioutil"

  "os"

  "bytes"

  "log"
)

func main() {
    inputData := []byte("Hello, World!")

    err := ioutil.WriteFile("File.txt", inputData, 0777)

   f, err := os.Open("File.txt")

   if err != nil{

     log.Fatal(err)
   }
   defer f.Close()

   buf := new(bytes.Buffer)

   buf.ReadFrom(f)

   data := buf.String()

   fmt.Print(data)

}

출력:

Hello, World!

위의 코드에서 EOF까지 파일에서 데이터를 읽고 버퍼에 추가하는 buf.ReadFrom()을 사용했습니다. 버퍼 크기는 필요에 따라 커집니다.

Go에서 strings.Builder 메서드 사용

package main

import (
    "io/ioutil"

   "io"

   "os"

   "strings"
)

func main() {
    inputData := []byte("Hello, World!")

    err := ioutil.WriteFile("file.txt", inputData, 0777)

   f, err := os.Open("file.txt")

   if err != nil {

      panic(err)
   }

   defer f.Close()

   b := new(strings.Builder)

   io.Copy(b, f)

   print(b.String())
}

출력:

Hello, World!

위의 코드에서 strings.Builder는 문자열을 연결합니다. 데이터는 파일에서 한 장씩 읽은 다음 함께 인쇄됩니다.

Musfirah Waseem avatar Musfirah Waseem avatar

Musfirah is a student of computer science from the best university in Pakistan. She has a knack for programming and everything related. She is a tech geek who loves to help people as much as possible.

LinkedIn

관련 문장 - Go File

관련 문장 - Go String