Study Memory Work
[Go Lang] File IO : 파일 쓰기 본문
파일생성 : Create
- package : os
- 새 파일 작성 및 파일 열기
- 파일 관련 메소드에는 예외처리를 확실히 해줘야 한다.
- 파일을 오픈하고 나면 꼭 닫아주어야한다.
package main
import (
"fmt"
"os"
)
func errCheck1(e error) {
if e != nil {
panic(e)
}
}
func main() {
file, err := os.Create("fileIO/anyfile.txt")
errCheck1(err) // 예외처리 중요!
// 파일 열고난 후에는 close 필수!!
defer file.Close()
}
파일 쓰기 : write, writeString, writeAt
- package : os
// 예제 1 : Write
s1 := []byte{123, 124, 125, 126, 127}
n1, err := file.Write(s1)
errCheck2(err)
fmt.Printf("Write Success Ex1 (%d bytes) \n", n1)
// 예제2 : WriteString
n2, err := file.WriteString("\nHello Golang! \nFile Write Test - 2 \n")
errCheck2(err)
fmt.Printf("Wrtie Success Ex2 (%d bytes)\n", n2)
file.Sync() // 제대로 반영하기. 여러변 쓰기를 반복할 때 함께 사용하기를 권장하는 메소드
// 예제 3 : WriteAt
s2 := "\nHello Golang! \nFile Write Test - 3 \n"
n3, err := file.WriteAt([]byte(s2), 100)
errCheck2(err)
fmt.Printf("Write Success Ex3 (%d bytes) \n", n3)
file.Sync()
CSV 파일 쓰기 :
- package : os, encoding/csv
- 파일의 용량이 클 경우 버퍼 사용 권장 (bufio package)
- Excel 관련 파일 입출력 패키지도 있음!! (http://gihub.com/tealeg/xlsx)
package main
import (
"encoding/csv"
"fmt"
"os"
)
func errCheck1(e error) {
if e != nil {
panic(e)
}
}
func main() {
// create file
file, err := os.Create("fileIO/test_write.csv")
errCheck1(err)
defer file.Close()
// csv writer
wr := csv.NewWriter(file)
//wr := csv.NewWriter(buferio.NewWriter(file)) 용량 클경우 버퍼io 사용권장
// 쓸내용 담기
wr.Write([]string{"Kim", "4.8"})
wr.Write([]string{"Park", "4.2"})
wr.Write([]string{"Lee", "3.5"})
wr.Write([]string{"Gwak", "3.8"})
wr.Write([]string{"Choi", "4.9"})
wr.Write([]string{"Song", "4.0"})
wr.Flush() // 버터에 존재하는 데이터를 파일로 쓰는 메소드
fi, err := file.Stat()
errCheck1(err)
fmt.Printf("CSV 쓰기 작업 후 파일 크기(%d bytes)\n", fi.Size())
fmt.Println("CSV 파일명 : ", fi.Name())
fmt.Println("CSV 파일 권한 : ", fi.Mode())
}
'Programing > Go' 카테고리의 다른 글
[Go Lang] 사용자 정의 타입 (0) | 2023.02.28 |
---|---|
[Go Lang] File IO : 파일 읽기 (0) | 2023.02.28 |
[Go Lang] 에러처리 (0) | 2023.02.27 |
[Go Land] Time (0) | 2023.02.23 |
[Go Lang] String Formatting (0) | 2023.02.23 |