Go言語でファイルの読み書き
ファイルのオープン、読み出し、書き出しあたりの勉強のためにサンプル書いてみた。
引数1で渡されたファイル名でファイルをオープンし、1行ずつ読みだして、引数2のファイル名に書き出してるだけ。
エラーはほとんど無視で、EOFだけはチェックしている。
package main import ( "bufio" "flag" "io" "os" ) func main() { flag.Parse() var reader *bufio.Reader var writer *bufio.Writer var line []byte var err error // ファイルを読み込みモードでオープン read_file, _ := os.OpenFile(flag.Arg(0), os.O_RDONLY, 0600) // Readerを用意 reader = bufio.NewReader(read_file) // ファイルを書き込みモードでオープン(ファイルがなかったら作成する) write_file, _ := os.OpenFile(flag.Arg(1), os.O_WRONLY|os.O_CREATE, 0600) // Writerを書き込みモードでオープン writer = bufio.NewWriter(write_file) for { // EOFなら終了 if err == io.EOF { return } // 1行読み出す line, err = reader.ReadBytes('\n') // ファイルに書き出す writer.Write(line) writer.Flush() } }
間違った書き方してコンパイルが通らない、という状況が何度もあった。そのうち慣れるかなぁ。
実際にはbuilidする前にflymakeでエラーがわかるので、それほどストレスではない。