[입문] Go 언어로 파일 읽기/쓰기를 해보자

[입문] Go 언어로 파일 읽기/쓰기를 해보자

2022-10-04 last update

7 minutes reading 5 프로그래밍 입문 Go 언어

소개


  • 이 기사는 Go 언어의 파일을 읽고 내보내는 방법을 설명합니다.

  • 주의점



  • 독자의 지식 레벨은, 이하의 분을 상정하고 있습니다.
  • 프로그래밍의 기초적인 지식이 있다
  • 변수는 무엇이며 함수는 무엇입니까
  • 변수와 함수를 정의 할 수 있습니까

  • 뭔가 언어를 접한 적이 있다
  • C 언어, Java 언어, 파이썬 언어 등


  • 잘 실시할 수 없었던 경우나, 불명한 점이 있을 때는, 코멘트를 기재해 주시면 좋겠습니다.

  • 실행 환경


  • OS
  • Windows10 Pro 64-bit

  • 편집기
  • VisualStudio Code

  • 작업 디렉토리
  • C:\Users\Romeo\Documents\go


  • 파일 로드



    사전 준비


  • 이번에는, 텍스트 파일의 읽어들이기를 실시하므로, 먼저 파일을 준비해 둡시다.
  • "C:\Users\Romeo\Documents\go"아래에 test.txt를 만듭니다.
  • 내용은 무엇이든 좋은데, 나는 다음과 같이 만들었습니다.

  • test.txt
    Hi.
    This is a test file.
    

    소스 코드


  • FileRead.go를 신규 작성해, 이하의 내용을 포함합니다.

  • FileRead.go
    package main
    
    import (
        "fmt"
        "log"
        "os"
    )
    
    const BUFSIZE = 1024    //読み込む際のバッファサイズ指定
    
    func main() {
        file, err := os.Open(`C:\Users\Romeo\Documents\test.txt`)   //ファイルオープン
        if err != nil {
            log.Fatal(err)  //ファイルが開けなかったときエラー出力
        }
        defer file.Close()  //全部の処理終了後にファイルクローズ
    
        buf := make([]byte, BUFSIZE)    //byte型配列に格納
        for {   //繰り返し読み込み
            n, err := file.Read(buf)    //ファイル読み込み
            if n == 0 {
                break   //中身がなくなったらbreak
            }
            if err != nil {
                log.Fatal(err)
                break   //ファイル読み込みに失敗したらbreak
            }
    
            fmt.Printf(string(buf[:n])) //読み込んだ内容を出力
        }
    }
    

    실행 결과


    C:\Users\Romeo\Documents\go> go run FileRead.go
    Hi.
    This is a test file.
    

    소스 코드 해설


  • 기본적으로는, 자주 있는 파일 로드 알고리즘과 같다고 생각합니다.

  • 이번에 가져온 패키지는 3개입니다.
  • fmt
  • 표준 출력을 위해

  • log
  • 오류 출력으로 인해

  • os
  • 파일을 처리하기 위해



  • 파일을 열 때 오류 변수가 반환됩니다. 확실히 받아, 에러 처리까지 기재합시다.
  • defer에 파일 닫기 함수를 나열하는 것을 잊지 마십시오.


  • 일부 발췌
    file, err := os.Open(`C:\Users\Romeo\Documents\test.txt`)   //ファイルオープン
        if err != nil {
            log.Fatal(err)  //ファイルが開けなかったときエラー出力
        }
    defer file.Close()  //ファイルクローズ
    

    파일 쓰기



    소스 코드


  • FileWrite.go를 신규 작성해, 이하의 내용을 포함합니다.
  • 이번 프로그램에서는, test2.txt를 신규 작성해, 거기에 "testmessage"를 기입합니다.

  • FileWrite.go
    package main
    
    import (
        "os"
    )
    
    func main() {
        file, err := os.Create(`C:\Users\Romeo\Documents\test2.txt`)
        if err != nil {
            log.Fatal(err)  //ファイルが開けなかったときエラー出力
        }
        defer file.Close()
    
        output := "testmessage"
        file.Write(([]byte)(output))
    }
    

    실행 결과



    test2.txt
    testmessage
    

    소스 코드 해설


  • 이쪽도, 자주 있는 알고리즘이라고 생각합니다.
  • output이라는 변수에, 쓰고 싶은 내용을 기재하고 있습니다.

  • 마지막으로


  • 변수 정의나 에러 출력 등, 익숙하지 않은 점도 많이 있었습니다.
  • 파일 읽기 쓰기는 초보중의 초보이므로, 이것을 베이스로 한층 더 공부에 격려합니다.