입력 파일을 읽고 구조체에 넣고 구조체를 보고 아웃 파일에 쓰기를 처리한다.
- 구조체를 정의하고 구조체 Get()/Set() 메소드를 정의한다.
- 구조체를 보관하는 Array를 정의한다.
- 파일을 읽어서 구조체 Set() 메소드로 세팅한다
- 구조체 Get() 메소드를 구조체 정보를 읽어 파일에 쓰기한다.
package main
import (
"bufio"
"fmt"
_ "io"
"log"
"os"
)
type User struct {
id string
name string
}
func (user *User) Set(any []byte) {
user.id = string(any[:13])
user.name = string(any[13:23])
}
func (user *User) Get() string {
return user.id + user.name + "\n"
}
func main() {
fmt.Println(" exec file read/write ")
var arrayusers []*User = make([]*User, 2)
filein, err := os.Open("../input.txt")
if err != nil {
log.Fatal(err)
}
defer filein.Close()
scanner := bufio.NewScanner(filein)
i := 0
for scanner.Scan() {
user := new(User)
text := scanner.Text()
user.Set([]byte(text))
arrayusers[i] = user
i = i + 1
}
if err := scanner.Err(); err != nil {
log.Fatal(err)
}
fileout, err := os.Create("../output.txt")
if err != nil {
log.Fatal(err)
}
defer fileout.Close()
w := bufio.NewWriter(fileout)
for _, line := range arrayusers {
fmt.Println(" line ", line)
fmt.Println(" line.Get ", line.Get())
//func (b *Writer) WriteString(s string) (int, error)
_, err := w.WriteString(line.Get())
if err != nil {
log.Fatal(err)
}
}
w.Flush()
}
댓글
댓글 쓰기