LoginSignup
8
4

More than 3 years have passed since last update.

【初学者向け】golangのioutilについてまとめてみた。

Posted at

golangでは、ファイルを読み書きする時にはioutilというパッケージ機能を使うのが一般的です。
iouitlについて、少しまとめてみました。

想定読者

golang初学者(メソッドの引数とか戻り値とか、:=の意味はソースを見てわかるレベル)

ioutilって何?

「io」はデータの読み書き、「util」はutility(有用性)の略です。
つまり、データの読み書きに必要な機能をまとめたパッケージです。

一つ一つの機能を組み合わせてエラーハンドリングとか実装できない(そもそも忘れちゃう)プログラマでも
簡単にファイルの読み書きができるような機能をioutilというパッケージでを用意してあげたよ!便利でしょ!って感じ。

どんな機能があるの?

ファイルの生成機能(WriteFile)

ioutil.go
func WriteFile(filename string, data []byte, perm os.FileMode) error {
...
}

ファイルの生成には、WriteFileファンクションを使います。

ファイル名を第一引数、ファイルの中身を第二引数、ファイルに対するパーミッションを第3引数に渡します。
パーミッションについては、Windowsは特に気にしなくてよいようです。(適当に0を渡す)

例えば、HELLO WORLDという文字が書かれた、sample.txtを生成したい場合には、第一引数に"sample.txt"、第二引数に"HELLO WORLD"を[]byteに変換したものを渡せばよいです。

main.go
err := ioutil.WriteFile("sample.txt", []byte("HELLO WORLD"), 0)
if err != nil {
    log.Fatalln(err)
}

image.png

"HELLO WORLD"がどうしてbyte配列(72とか69とか)になるの?って人はこちらを参照。(僕は知りませんでした...)

ファイルの読取機能(ReadFile)

ioutil.go
func ReadFile(filename string) ([]byte, error) {
...
}

ファイルを読み込むときには、ReadFileファンクションを使います。
引数はファイル名一つだけですが、[]byteが戻り値なので、こちら側でstringに変換する必要があります。

main.go
//main.goの同階層にあるsample.txtを参照
data, _ := ioutil.ReadFile("sample.txt")
//main.goの1階層上にあるfileフォルダの中にあるsample.txtを参照
data, _ := ioutil.ReadFile("../file/sample.txt")

//戻り値の[]byteをstirngに変換
fmt.Println(string(data))
8
4
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
8
4