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

Study Memory Work

[Go Lang] File IO : 파일 쓰기 본문

Programing/Go

[Go Lang] File IO : 파일 쓰기

Hera Choi 2023. 2. 27. 17:22

 

파일생성 : 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