파일 처리
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 |