상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
궁금한 상식 보기
채권 뉴스레터: 최신 정보 받아보는 팁
원금 손실 대응을 위한 스킬 세트
개인 회생과 가족, 주변의 지원 필요성
조기상환으로 재정 건강 점검하기
부동산 분쟁과 중개인의 역할
부동산 분쟁과 래핑 및 세금 문제
채권자의 장기 투자 관점
"연체기록 관리 앱, 어떤 것이 좋을까?"
"연체기록 없애기에 도전하는 나의 이야기"
"연체기록과 차별화된 금융 서비스 비교"
신용회복을 위한 재정 관리 팁
신용회복 후 주의해야 할 재정 관리
Previous
Next
수정하기 - Go 언어에서 파일 입출력(I/O)은 어떻게 하나요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
Go 언어에서 파일 입출력(I/O)은 `os` 패키지와 `io`, `bufio`, `encoding/csv`, `encoding/json` 등 다양한 패키지를 통해 수행할 수 있습니다. Go는 파일을 읽고 쓰는 작업을 간단하고 효율적으로 처리할 수 있도록 설계되었습니다. 아래에서는 Go에서 파일 입출력을 수행하는 방법에 대해 자세히 설명하겠습니다. 1. 파일 열기 및 생성 파일을 열거나 생성하기 위해 `os.Open` 또는 `os.Create` 함수를 사용할 수 있습니다. - 파일 열기 : `os.Open`은 파일을 읽기 전용으로 엽니다. - 파일 생성 : `os.Create`는 파일을 생성하고, 파일이 이미 존재하는 경우에는 기존 파일을 덮어씁니다. ```go package main import ( "fmt" "os" ) func main() { // 파일 열기 file, err := os.Open("example.txt") if err != nil { fmt.Println(err) return } defer file.Close() // 함수 종료 시 파일 닫기 // 파일 생성 newFile, err := os.Create("newfile.txt") if err != nil { fmt.Println(err) return } defer newFile.Close() } ``` 2. 파일 읽기 파일에서 데이터를 읽기 위해 `io` 패키지의 `Read` 메서드나 `bufio` 패키지를 사용할 수 있습니다. `bufio`는 버퍼링된 I/O를 제공하여 성능을 향상시킵니다. ```go package main import ( "bufio" "fmt" "os" ) func main() { file, err := os.Open("example.txt") if err != nil { fmt.Println(err) return } defer file.Close() scanner := bufio.NewScanner(file) for scanner.Scan() { fmt.Println(scanner.Text()) } if err := scanner.Err(); err != nil { fmt.Println(err) } } ``` 3. 파일 쓰기 파일에 데이터를 쓰기 위해 `os` 패키지의 `Write` 메서드나 `bufio.Writer`를 사용할 수 있습니다. ```go package main import ( "bufio" "fmt" "os" ) func main() { newFile, err := os.Create("newfile.txt") if err != nil { fmt.Println(err) return } defer newFile.Close() writer := bufio.NewWriter(newFile) _, err = writer.WriteString("Hello, World!\n") if err != nil { fmt.Println(err) return } // 버퍼를 플러시하여 파일에 기록 writer.Flush() } ``` 4. 파일 읽기 및 쓰기 예제 아래는 파일을 읽고, 내용을 수정한 후 다시 파일에 쓰는 예제입니다. ```go package main import ( "bufio" "fmt" "os" ) func main() { // 파일 읽기 inputFile, err := os.Open("example.txt") if err != nil { fmt.Println(err) return } defer inputFile.Close() scanner := bufio.NewScanner(inputFile) var lines []string for scanner.Scan() { lines = append(lines, scanner.Text()) } if err := scanner.Err(); err != nil { fmt.Println(err) } // 파일 쓰기 outputFile, err := os.Create("output.txt") if err != nil { fmt.Println(err) return } defer outputFile.Close() writer := bufio.NewWriter(outputFile) for _, line := range lines { _, err := writer.WriteString(line + "\n") if err != nil { fmt.Println(err) return } } writer.Flush() } ``` 5. JSON 및 CSV 파일 처리 Go는 JSON 및 CSV 파일을 처리하기 위한 내장 패키지를 제공합니다. - JSON : `encoding/json` 패키지를 사용하여 JSON 데이터를 인코딩 및 디코딩할 수 있습니다. - CSV : `encoding/csv` 패키지를 사용하여 CSV 파일을 읽고 쓸 수 있습니다. JSON 예제 ```go package main import ( "encoding/json" "fmt" "os" ) type Person struct { Name string `json:"name"` Age int `json:"age"` } func main() { person := Person{Name: "Alice", Age: 30} // JSON 파일 쓰기 jsonFile, err := os.Create("person.json") if err != nil { fmt.Println(err) return } defer jsonFile.Close() encoder := json.New<a href='https://sangseek.com/sangseeks/Encoder/ko'>Encoder</a>(jsonFile) err = encoder.Encode(person) if err != nil { fmt.Println(err) } // JSON 파일 읽기 jsonFile, err = os.Open("person.json") if err != nil { fmt.Println(err) return } defer jsonFile.Close() var p Person decoder := json.NewDecoder(jsonFile) err = decoder.Decode(&p) if err != nil { fmt.Println(err) } fmt.Println(p) } ``` CSV 예제 ```go package main import ( "encoding/csv" "fmt" "os" ) func main() { // CSV 파일 쓰기 csvFile, err := os.Create("data.csv") if err != nil { fmt.Println(err) return } defer csvFile.Close() writer := csv.NewWriter(csvFile) records := [][]string{ {"Name", "Age"}, {"Alice", "30"}, {"Bob", "25"}, } err = writer.WriteAll(records) if err != nil { fmt.Println(err) } // CSV 파일 읽기 csvFile, err = os.Open("data.csv") if err != nil { fmt.Println(err) return } defer csvFile.Close() reader := csv.NewReader(csvFile) records, err = reader.ReadAll() if err != nil { fmt.Println(err) } for _, record := range records { fmt.Println(record) } } ``` 결론 Go 언어에서 파일 입출력은 매우 직관적이며, 다양한 패키지를 통해 쉽게 구현할 수 있습니다. 기본적인 파일 읽기 및 쓰기부터 시작하여 JSON 및 CSV와 같은 형식의 데이터 처리까지, Go는 강력한 파일 I/O 기능을 제공합니다. 이러한 기능을 활용하여 다양한 애플리케이션을 개발할 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기