Programming Language/go

파일 처리하기

김크리 2022. 9. 12. 12:11

파일 처리

os 패키지

  • func Create(name string)(file *File, err error) : 기존 파일을 여거나 새 파일을 생성
  • func (f *File) Close() error: 열린 파일을 닫음
  • func (f *File) Write(b []byte)(n int, err error) : 파일에 값을 사용, 파일에 쓴 데이터의 길이와 에러 값 리턴
  • func Open(name string)(file *File, err error) : 파일 열기
    • os.Open 함수로 파일을 열 경우에는, 읽기만 진행 할 수 있다.
  • func (f *File) Stat()(fi FileInfo, err error) : 파일의 정보를 얻어옴
  • func (f *File) Read(b []byte)(n int, err error) : 파일에서 값을 읽음, 파일에서 읽은 데이터의 길이와 에러 값을 리턴
  • func OpenFile(name string, flag int, perm FileMode)(file *File, err error):파일 플래그, 파일 모드를 지정하여 파일 열기
    • 파일 플래그를 통해 파일의 사용 방식에 대해 정할 수 있다.
    • 파일 플래그는 OR(|) 연산자를 사용하여 조합할 수 있다.
    • 파일 모드 는 os.FileMode 타입으로 유닉스/리눅스 형식의 권한을 지정할 수 있다.
  • func (f *File) Seek(offset int64, whence int)(ret int64, err error) : 파일을 읽거나 쓸 위치로 이동ioutil 패키지
  • package main import ( “fmt” “os” ) func main(){ file, err := os.Create(“hello.txt”) // create file if err != nil { fmt.Println(err) return } defer file.Close() // close file before end of main function. s := “hello, world” n, err := file.Write([]byte(s)) if err != nil { fmt.Println(err) return } fmt.Println(n, “바이트 저장 완료”) file2, err2 := os.Open(“hello.txt”) //open file if err2 != nil { fmt.Println(err) return } defer file2.Close() fi2, err2 := file2.Stat() if err2 != nil { fmt.Println(err2) return } var data = make([]byte, fi2.Size()) if err2 != nil { fmt.Println(err) return } fmt.Println(n, “바이트 읽기 완료”) fmt.Println(string(data)) }
  • func WriteFile(filename string, data []byte, perm os.FileMode) error : 파일 쓰기, 에러 값을 리턴
  • func ReadWrite(filename string)([] byte, error): 파일 읽기, 읽은 데이터(바이트 슬라이스)와 에러 값을 리턴bufio
  • io.Reader 와 io.Writer 인터페이스를 사용하여 입출력을 처리할 수 있다.
  • func NewReader(rd io.Reader) *Reader : 읽기 인스턴스 생성
  • func NewWriter(w io, Writer) *Writer : 쓰기 인스턴스 생성

압축

go 언어는 압축 알고리즘을 기본 패키지로 제공해준다.
압축 알고리즘은 파일, 패킷 블록 형식(payload)으로 데이터를 압축하여 용량을 줄일 수 있으며, 반대로 해제할 수 있다.

'Programming Language > go' 카테고리의 다른 글

유니코드와 UTF-8  (0) 2022.09.05
함수 사용하기  (0) 2022.08.23
Print Hello world, 표준 입출력  (0) 2022.07.13
Go 언어 프로그래밍 - SOLID  (0) 2021.08.11
Go 언어 프로그래밍 - 채널과 컨텍스트  (0) 2021.08.09