본문 바로가기
IT 초보코딩의 세계/Go 언어

Go언어의 출력함수 IO, 파일 입출력, ioutil패키지 3장

by 조이럭키7 2023. 4. 12.
반응형

앞서서 출력함수 IO, 문자열 처리 및 조작 그리고 정규식에 대해서 알아보았으며 이후에 3장을 보도록하자 2장은 아래포스팅을 참고하자

https://joylucky7.tistory.com/41

 

Go언어의 출력함수 IO, 문자열 처리 및 조작, 정규식 2장

◆ String 패키지의 문자열 검색을 위한 함수 ▶ func Contains(s, substr string) bool: 문자열이 포함되어 있는지 검색 ▶ func ContainsAny(s, chars string) bool: 특정 문자가 하나라도 포함되어 있는지 검색 ▶ func

joylucky7.tistory.com


◆ OS 패키지의 파일 처리 함수

func Create(name string) (file *File, err error): 기존 파일을 열거나 새 파일을 생성

func Open(name string) (file *File, err error): 기존 파일을 열기

func (f *File) Close() error: 열린 파일을 닫음


◆ fmt 패키지의 파일 입출력 함수

func Fprint(w io.Writer, a ...interface{}) (n int, err error): 값을 그대로 문자열로 만든 뒤 파일에 저장

func Fprintln(w io.Writer, a ...intertace{}) (n int, err error): 값을 그대로 문자열로 만든 뒤 문자열 끝에 개행 문자(\n) 붙이고 파일에 저장

func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error): 형식을 지정하여 파일에 저장

func Fscan(r io.Reader, a ...interface{}) (n int, err error): 파일을 읽은 뒤 공백, 개행 문자로 구분 된 문자열에서 입력을 받음

func Fscanln(r io.Reader, a ...interface{}) (n int, err error): 파일을 읽은 뒤 공백으로 구분된 문자 열에서 입력을 받음

func Fscanf(r io.Reader, format string, a ...interfaced) (n int, err error): 파일을 읽은 뒤 문자 열에서 형식을 지정하여 입력을 받음

 

파일에 기록

package main

import (
  "fmt"
  "os"
)

func main() {
  file1, _ := os.Create("test_1.txt")         
  defer file1.Close()                         
  fmt.Fprintln(file1, 1, 1.1, "Joylucky")
                                          
  file2, _ := os.Create("test_2.txt")                    
  defer file2.Close()                                    
  fmt.Fprintf(file2, "%d,%f,%s", 1, 1.1, "Joylucky")
}

 파일에서 읽기

package main

import (
  "fmt"
  "os"
)

func main() {
  var num1 int
  var num2 float32
  var s string

  file1, _ := os.Open("test_1.txt")   
  defer file1.Close()                 
  fmt.Fscanln(file1, &num1, &num2, &s)                                                
  fmt.Println(num1, num2, s)          

  file2, _ := os.Open("test_2.txt")              
  defer file2.Close()                            
  fmt.Fscanf(file2, "%d,%f,%s", &num1, &num2, &s)                                                                      
  fmt.Println(num1, num2, s)                    
}

ioutl 패키지 이용

func WriteFile(filename string, data []byte, perm os.FileMode) error: 파일 쓰기. 에러 값을 리턴

func ReadFile(filename string) ([]byte, error): 파일 읽기. 읽은 데이터(바이트 슬라이스)와 에러 값을 리턴

package main

import (
  "fmt"
  "io/ioutil"
  "os"
)

func main() {
  s := "Hello, world!"
  err := ioutil.WriteFile("test.txt", []byte(s), os.FileMode(644))
 // s를 []byte 바이트 슬라이스로 변환, s를 test.txt 파일에 저장
  if err != nil {
  fmt.Println(err)
  return
  }

  data, err := ioutil.ReadFile("test.txt") // test.txt의 내용을 읽어서 바이트 슬라이스 리턴
  if err != nil {
  fmt.Println(err)
  return
  }
  fmt.Println(string(data)) // 문자열로 변환하여 data의 내용 출력
}

 

반응형

댓글