Go言語における「ファイルの読み書き」は、標準ライブラリ os および io/ioutil(Go 1.16以降は主に os と io、os と os.ReadFile, os.WriteFile など)を用いて行います。以下に、ファイルの読み込み、書き込み、それぞれの基本的な方法と注意点を詳しく説明します。
1. ファイルの読み込み
方法1:os.ReadFile を使った全読み込み(Go 1.16以降)
os.ReadFile を使った全読み込み(Go 1.16以降)
特徴
-
ファイル全体を一度にメモリへ読み込む。
-
小〜中規模ファイルに適している。
-
エラーハンドリングが必要。
方法2:os.Open + bufio.Scanner で1行ずつ読み込み
os.Open + bufio.Scanner で1行ずつ読み込み
特徴
-
メモリ効率が良い。
-
大きなファイルの読み取りに向いている。
2. ファイルへの書き込み
方法1:os.WriteFile で一括書き込み(Go 1.16以降)
os.WriteFile で一括書き込み(Go 1.16以降)
特徴
-
ファイルを新規作成または上書きする。
-
第3引数はパーミッション(例:
0644は読み書き可の一般的な設定)。
方法2:os.Create + Write / WriteString
os.Create + Write / WriteString
特徴
-
os.Createはファイルを新規作成(既存なら上書き)。 -
Write,WriteString,fmt.Fprintlnなどの出力関数が利用可能。
方法3:追記モードで書き込み(os.OpenFile)
os.OpenFile)
特徴
-
os.O_APPENDで追記、os.O_CREATEで存在しない場合に新規作成。 -
ログファイルや継続的な出力に便利。
3. 注意点
-
ファイル操作時は 必ず
defer file.Close()を使用してリソースを解放。 -
os.Openは読み取り専用、os.Createは上書き用、os.OpenFileは柔軟なフラグ設定が可能。 -
ファイルの文字コードは UTF-8 が前提。異なるエンコーディングの読み書きには追加ライブラリが必要。
まとめ
| 操作 | 推奨関数(Go 1.16以降) | 特徴 |
|---|---|---|
| 読み込み | os.ReadFile, bufio.Scanner |
小〜大ファイル、全体 or 逐次読取対応 |
| 書き込み | os.WriteFile, os.Create |
上書き、または追記モード選択可能 |
| 追記 | os.OpenFile |
フラグを組み合わせて柔軟に制御可能 |
Goにおけるファイル操作は、エラーハンドリングとリソース管理(ファイルのクローズ)が重要なポイントです。ファイルのサイズや用途に応じて適切な読み書き方法を選びましょう。
生成日:2025/05/03