Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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
관리 메뉴

Wisdom기록보관소

Go 파일 입출력을 해보자! 본문

Study!/GO

Go 파일 입출력을 해보자!

DisCat 2021. 6. 3. 17:54

일단! 티스토리에서 제공하는것 보다 마크다운에 익숙해져보기 위해 이 탬플릿을 사용해봅시다!

어쩌다 보니 Go 언어를 사용하게 되었다.

왜 사용하는지 궁금해 할사람은 없으니 재목에 맞는 포스팅을 가즈아.


다른 언어와 비슷하게 파일의 경로를 상대적, 절대경로등으로 파라미터를 주고 사용후에 close를 해주는 등 비슷한 사용법이였다.

ex)

package main

import (
    "os"
)

func main() {

    jsonFile, err := os.Create("test.json")

    if err != nil {
        panic(err)
    }

    jsonFile.Write([]byte("Go를 공부 해봅시다."))
    jsonFile.Close()
}

아주 간단하다 기본적인 go문법은 다른 곳에 적어놓고 보기로 하고
os란 패키지를 사용해서 파일을 생성하고 데이터를 썻다.

기본적으로 제공 되는 패키지이지만 이거 말고도 다양한 입출력 패키지가 내장되어 제공되고 있다.

  • package "os"
    os는 low level에서 운영체제 기능에 대한 플랫폼과는 독립적인 인터페이스를 제공하는 패키지이다. Unix와 비슷한 디자인이지만, 에러 처리는 Go와 비슷하다. os.File 타입은 디스크 위에 파일이나 바이트를 스트리밍하는 io.Reader, io.Writer를 구현할 때 사용된다.

  • package "io"
    io는 I/O primitive(가장 기본 단위)의 기본 인터페이스를 제공하는 패키지이다. 바이트 스트림(io.Reader, io.Writer, etc..)을 처리하는 인터페이스 뿐만 아니라 io.Copy(파일 복사), io.ReadFull(n byte 읽기)와 같은 함수를 제공한다.

  • package "io/util"
    io/ioutil는 I/O 유틸리티 함수를 구현한 패키지이다. io.ReadFile은 전체 파일을 메모리로 읽어들여 빠른 읽기를 수행할 수 있다. 그래서 큰 파일을 읽을 때는 사용하지 않는 것이 좋다. 정확한 파일 크기의 byte slice([]byte)를 할당하며, 자동으로 파일을 닫는다.

  • package "bufio"
    bufio는 효율 향상을 위해 입출력을 버퍼링하는 io.Reader, io.Writer를 래핑하는 타입을 제공한다. 행, 단어 단위로 읽기를 수행할때 사용한다. bufio.Scanner는 독립적인 행(line)을 효율적으로 읽는 데 유용한 타입이다. Scanner의 Scan()함수는 미리 정의된 개행문자 혹은 사용자가 정의한 delimeter(Split()사용)를 만날 때까지를 한 줄로(행, line) 판단하여 데이터를 한줄씩 읽는다.

    출처 https://judo0179.tistory.com/89


급하게 정리하느라 위와같은 패키지들이 있다는것만 확인하였다. 목적에 맞게 해당 패키지를 사용하면 되겠다.
데이터의 저장에는 사실 DB를 따로 사용하새 하겠지만 후에 이미지나 다른 파일들을 컨트롤 할때 필요할때를 대비해 공부를 해노아야겠다.

...