Go 言語の組み込みモジュールを触ってみる-ファイルの書き出し(os.WriteFile)

はじめに

今回は os パッケージの WriteFile 関数を使ってみます。

検証環境

1
2
3
4
5
$ uname -moi
x86_64 MacBookPro16,1 Darwin

$ go version
go version go1.16.3 darwin/amd64

インターフェイス

1
func WriteFile(name string, data []byte, perm FileMode) error

説明

ファイル名を受け取り、そのファイルにデータを書き込みます。 もしファイルが存在しなかった場合には、事前に指定されたパーミッションのファイルを作成します。

正常終了時は error の戻り値が nil となります。

サンプルコード

main.go

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
package main

import (
	"log"
	"os"
)

func main() {
	text := "Hello. Here is genzouw."
	err := os.WriteFile("/tmp/test.txt", []byte(text), 0764)

	if err != nil {
		log.Fatal(err)
	}
}

実行

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
$ ls -l /tmp/test.txt
"/tmp/test.txt": No such file or directory (os error 2)

$ go run ./main.go

$ ls -l /tmp/test.txt
.rwxr--r-- 23 genzouw  4 5 16:52 /tmp/test.txt*

$ cat /tmp/test.txt
Hello. Here is genzouw.

ひとこと

ファイルの書き込みもできるようになりました。 文字列をそのまま書き込めず、一度 []byte のようにスライスに変換しないといけないのが若干面倒です。