この記事では、Golangでファイルに書き込む方法を解説します。
ファイルの読み込みについてはこちらで詳しく解説しています。
ファイルを作成する
ファイルの中に何かを書き込むには、書き込むためのファイルを作成する必要があります。ここでは、ファイルを作成するために必要な手順を説明します。
file, err := os.Create("ファイル名.拡張子") // 同階層にファイルを作成する
if err != nil {
fmt.Println(err)
}
また、処理が終わったらそのファイルを閉じることを忘れないようにしてください。deferを使ってファイルを閉じることができます。
defer file.Close()
ファイルに文字列を書き込む
次に、ファイルに文字列を書き込む方法について説明します。
ioutilパッケージの使用
GolangのioutilパッケージにはWriteFile()という関数があり、これを使うと手間をかけずに直接ファイルにいくつかの文字列を書き込むことができます。
文字列はバイトスライスに変換されて、ファイル内に書き込まれます。また、この関数ではファイルモードも挿入する必要があり、今回はでは0644とします。
package main
import (
"io/ioutil"
)
func main() {
sampleString := []byte("This is a string") // 文字列からバイトスライスに変換
ioutil.WriteFile("test.txt", sampleString, 0644) // 0644はファイルモード(0)の8進数表現です
}
WriteString()関数を使用する
WriteString()関数はその名の通り、文字列をファイルに書き込む関数であり、この関数をを使用することで直感的に文字列の書き込みができます。
次の手順で解説します。
- 書き込み用のファイルを作成する
- そのファイルに対してすべての操作を行った後に閉じるように、defer を使ってすぐに閉じる
- その中に書き込む
以下は、上記の手順でファイルに書き込む例です。
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Create("test.txt") // ファイルを作成
if err != nil {
fmt.Println(err)
}
defer file.Close() // 最後にファイルを閉じる
file.Write([]byte("サンプルです")) // ファイルにダイレクトに書き込む
file.WriteString("\nサンプル2です") // 文字列を書き込む
}
上記のコードでは、書き込み関数が直接ファイルに書き込んでいます。
既存ファイルへの追記
既存のファイルへの追記は簡単です。
ファイルを開いてから、Fprintln()関数を使って追加します。
package main
import (
"fmt"
"os"
)
func main() {
f, err := os.OpenFile("test.txt", os.O_APPEND|os.O_WRONLY, 0644)
if err != nil {
fmt.Println(err)
return
}
newLine := "サンプル3です"
_, err = fmt.Fprintln(f, newLine)
if err != nil {
fmt.Println(err)
}
}
実行した結果、前項のtest.txtに新しく文字列が追加されることが確認できます。