0
0
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

【Go】ファイルに追記したいときは、os.OpenFileメソッドでos.O_APPENDフラグを使おう

Last updated at Posted at 2024-07-13

はじめに

ファイルに追記するプログラムを書いているときに、追記ではなく上書きされてしまうことがあり、勉強になったので書いておきます。

上書きされてしまうコード

os.WriteFileメソッドを使うと、ファイルの中身が上書きされてしまう。

package main

import (
	"fmt"
	"os"
)

func main() {
	err := os.WriteFile("test.txt", []byte("Hello, World!"), 0644)
	if err != nil {
		fmt.Println(err)
		return
	}
}

追記できるコード

os.OpenFileメソッドで、os.O_APPENDフラグを付けると追記できるようになる。

package main

import (
	"fmt"
	"os"
)

func main() {
	file, err := os.OpenFile("test.txt", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
	if err != nil {
		fmt.Println(err)
		return
	}
	defer file.Close()

	_, err = file.WriteString("Hello, World!\n")
	if err != nil {
		fmt.Println(err)
		return
	}
}

動かしてみる

# 2回実行してみる
go run main.go
go run main.go

ファイルの中身

追記できている。

Hello, World!
Hello, World!

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0