티스토리 뷰
Go에서 파일을 읽고 쓰는 방법을 보여주는 예제를 작성해보겠습니다. 여기서는 os 패키지를 사용하여 파일을 읽고 쓰는 방법을 설명하겠습니다.
파일 읽기 및 쓰기 예제
프로젝트 구조는 다음과 같습니다:
myproject/
└── main.go
main.go 파일 작성
main.go 파일을 생성하고 아래의 코드를 작성합니다.
package main
import (
"fmt"
"io"
"io/ioutil"
"log"
"os"
)
func main() {
// 쓰기 작업
writeFilePath := "example.txt"
content := []byte("Hello, this is an example file.\nHello2, this is an example file.\n")
err := ioutil.WriteFile(writeFilePath, content, 0644)
if err != nil {
log.Fatalf("Failed to write to file: %s", err)
}
fmt.Println("File written successfully")
// 읽기 작업
readFilePath := "example.txt"
data, err := ioutil.ReadFile(readFilePath)
if err != nil {
log.Fatalf("Failed to read file: %s", err)
}
fmt.Println("File content:")
fmt.Println(string(data))
// 추가 쓰기 작업
additionalContent := []byte("This is additional content.\n")
file, err := os.OpenFile(writeFilePath, os.O_APPEND|os.O_WRONLY, 0644)
if err != nil {
log.Fatalf("Failed to open file: %s", err)
}
defer file.Close()
_, err = file.Write(additionalContent)
if err != nil {
log.Fatalf("Failed to write additional content to file: %s", err)
}
fmt.Println("Additional content written successfully")
buff := make([]byte, 1024)
// 루프
for {
// 읽기
cnt, err := file.Read(buff)
// 끝이면 루프 종료
if cnt == 0 {
break
}
if err != nil && err != io.EOF {
panic(err)
}
// 쓰기
fmt.Println(buff[:cnt])
}
// 추가 내용 확인을 위해 파일 다시 읽기
data, err = ioutil.ReadFile(readFilePath)
if err != nil {
log.Fatalf("Failed to read file: %s", err)
}
fmt.Println("Updated file content:")
fmt.Println(string(data))
}
코드 설명
- 패키지 선언 및 import
package main
import (
"fmt"
"io/ioutil"
"log"
"os"
)
- 쓰기 작업ioutil.WriteFile을 사용하여 파일을 씁니다. 파일이 없으면 새로 생성하고, 있으면 내용을 덮어씁니다. 0644는 파일 권한을 설정합니다.
writeFilePath := "example.txt"
content := []byte("Hello, this is an example file.\n")
err := ioutil.WriteFile(writeFilePath, content, 0644)
if err != nil {
log.Fatalf("Failed to write to file: %s", err)
}
fmt.Println("File written successfully")
- 읽기 작업ioutil.ReadFile을 사용하여 파일을 읽고, 내용을 문자열로 변환하여 출력합니다.
readFilePath := "example.txt"
data, err := ioutil.ReadFile(readFilePath)
if err != nil {
log.Fatalf("Failed to read file: %s", err)
}
fmt.Println("File content:")
fmt.Println(string(data))
- 추가 쓰기 작업os.OpenFile을 사용하여 파일을 추가 모드(os.O_APPEND)로 열고, 추가 내용을 씁니다.
additionalContent := []byte("This is additional content.\n")
file, err := os.OpenFile(writeFilePath, os.O_APPEND|os.O_WRONLY, 0644)
if err != nil {
log.Fatalf("Failed to open file: %s", err)
}
defer file.Close()
_, err = file.Write(additionalContent)
if err != nil {
log.Fatalf("Failed to write additional content to file: %s", err)
}
fmt.Println("Additional content written successfully")
- 추가 내용 확인을 위해 파일 다시 읽기파일을 다시 읽어 추가된 내용을 확인합니다.
data, err = ioutil.ReadFile(readFilePath)
if err != nil {
log.Fatalf("Failed to read file: %s", err)
}
fmt.Println("Updated file content:")
fmt.Println(string(data))
실행
프로젝트 디렉토리에서 go run main.go 명령어를 실행하여 파일을 쓰고, 읽고, 추가 쓰기 작업을 수행합니다.
go run main.go
예상 출력
File written successfully
File content:
Hello, this is an example file.
Hello2, this is an example file.
Additional content written successfully
Updated file content:
Hello, this is an example file.
Hello2, this is an example file.
This is additional content.
이 예제에서는 example.txt 파일에 내용을 쓰고, 읽고, 추가 내용을 쓰는 작업을 수행합니다. 이 코드를 통해 파일 작업을 수행하는 방법을 이해할 수 있습니다.
출처 : chatGPT
'go' 카테고리의 다른 글
Go Http Post 호출 (0) | 2024.07.16 |
---|---|
Go Http GET 요청 (0) | 2024.07.16 |
Go 채널(Channels) (0) | 2024.07.12 |
Go루틴(goroutine) (0) | 2024.07.12 |
Go defer, panic, recover (0) | 2024.07.11 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- oracle
- REST
- 샘플
- SHEETJS
- AG-GRID
- springboot
- lombok
- cache
- 설정
- thymeleaf
- listToMap
- RESTful
- 타임리프
- 예제
- example
- restful서비스
- mybatis
- 그리드
- 스프링부트
- ag grid
- 스프링
- Javascript
- Spring Boot
- UI
- 엑셀
- sample
- 메시지
- spring
- java
- mapToList
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함