カテゴリ: Go言語 更新日: 2026/05/27

Go言語のioutil(現在はos/io)による簡単なファイル操作例を初心者向けに徹底解説

Go言語のioutil(現在はos/io)による簡単なファイル操作例
Go言語のioutil(現在はos/io)による簡単なファイル操作例

先生と生徒の会話形式で理解しよう

生徒

「Go言語でファイルを読み書きする方法がよく分かりません。簡単な方法はありますか?」

先生

「Go言語では、昔はioutilという便利なパッケージが使われていましたが、現在はosやioパッケージに分かれて提供されています。」

生徒

「ioutilって今は使えないんですか?」

先生

「使えますが非推奨になっています。これからはosやioを使う方法を覚えるとよいです。」

生徒

「初心者でも分かる簡単な方法で教えてください!」

先生

「では基本からゆっくり見ていきましょう。」

1. ioutilとは何か

1. ioutilとは何か
1. ioutilとは何か

Go言語のioutilは、ファイルの読み書きを簡単に行うための便利なパッケージでした。例えばファイルを丸ごと読み込む、まとめて書き込むといった処理が短いコードで書ける特徴があります。

しかし現在では、より分かりやすく整理するためにosパッケージやioパッケージに機能が分割されています。そのため新しい書き方を覚えることが重要です。

初心者の方は、まずファイルとは何かを理解しましょう。ファイルとはパソコンの中にあるデータの箱のようなものです。テキストファイルであれば文字が保存されます。

2. ファイルに書き込む基本(os.WriteFile)

2. ファイルに書き込む基本(os.WriteFile)
2. ファイルに書き込む基本(os.WriteFile)

Go言語でファイルにデータを書き込む最も簡単な方法はos.WriteFileです。この関数を使うと一度にファイルへ内容を書き込めます。


package main

import (
    "os"
)

func main() {
    data := []byte("こんにちはGo言語")

    os.WriteFile("sample.txt", data, 0644)
}

ここでのポイントは次の通りです。

  • byteはデータの単位で文字もこの形に変換される
  • 0644はファイルの権限で読み書きできる設定

3. ファイルを読み込む基本(os.ReadFile)

3. ファイルを読み込む基本(os.ReadFile)
3. ファイルを読み込む基本(os.ReadFile)

ファイルを読むときはos.ReadFileを使います。これもとてもシンプルです。


package main

import (
    "fmt"
    "os"
)

func main() {
    data, _ := os.ReadFile("sample.txt")

    fmt.Println(string(data))
}

stringに変換することで人が読める文字になります。データは最初byteとして扱われるため、この変換が必要です。

4. 追記する方法(os.OpenFile)

4. 追記する方法(os.OpenFile)
4. 追記する方法(os.OpenFile)

ファイルに追記したい場合はos.OpenFileを使います。追記とは既存の内容の後ろに追加することです。


package main

import (
    "os"
)

func main() {
    file, _ := os.OpenFile("sample.txt", os.O_APPEND|os.O_WRONLY, 0644)
    defer file.Close()

    file.WriteString("\n追記しました")
}

O_APPENDは追記モード、O_WRONLYは書き込み専用という意味です。難しく感じるかもしれませんが、ファイルの使い方を指定しているだけです。

5. ファイルが存在するか確認する

5. ファイルが存在するか確認する
5. ファイルが存在するか確認する

ファイル操作では、ファイルがあるかどうか確認することも大切です。存在しないとエラーになるためです。


package main

import (
    "fmt"
    "os"
)

func main() {
    _, err := os.Stat("sample.txt")

    if err == nil {
        fmt.Println("ファイルは存在します")
    } else {
        fmt.Println("ファイルは存在しません")
    }
}

Statはファイルの情報を取得する関数です。エラーがなければ存在していると判断できます。

6. ioutilからの移行ポイント

6. ioutilからの移行ポイント
6. ioutilからの移行ポイント

以前のioutilではReadFileやWriteFileが提供されていましたが、現在は同じ名前でosに移動しています。そのためコードの書き方はほとんど変わりません。

違いはパッケージ名だけです。初心者の方は新しい書き方を覚えておけば問題ありません。

またioパッケージではデータの流れを扱うことができ、より高度な処理に対応できますが、まずは基本の読み書きをしっかり理解することが重要です。

7. エラー処理の基本

7. エラー処理の基本
7. エラー処理の基本

Go言語ではエラー処理がとても重要です。ファイル操作では失敗する可能性があるため必ず確認します。


package main

import (
    "fmt"
    "os"
)

func main() {
    data, err := os.ReadFile("no_file.txt")

    if err != nil {
        fmt.Println("エラーが発生しました")
        return
    }

    fmt.Println(string(data))
}

errはエラー情報を表します。nilであれば問題なし、それ以外ならエラーが起きています。

8. 初心者がつまずきやすいポイント

8. 初心者がつまずきやすいポイント
8. 初心者がつまずきやすいポイント

初心者がよく困るのはパスの指定です。ファイルの場所が正しくないと読み込みに失敗します。現在のフォルダにあるかどうか確認しましょう。

また文字コードの違いによって文字化けが起きることもあります。基本的にはUTF8で保存するのが安全です。

ファイル操作はプログラミングの基礎であり、データ保存やログ出力など多くの場面で使われます。Go言語のosやioを使った方法を覚えることで実践的な開発に役立ちます。

Go言語を基礎からスッキリ学びたい人や、 文法だけでなく「実用的な使い方」まで押さえたい人には、 定番の入門書がこちらです。

基礎からわかるGo言語をAmazonで見る

※ Amazon広告リンク

まとめ

まとめ
まとめ

Go言語におけるファイル操作は、プログラミングの基礎でありながら実務でも非常に重要な技術です。本記事では、従来のioutilパッケージの役割から始まり、現在主流となっているosパッケージやioパッケージを使ったファイル操作の基本を丁寧に学びました。特に、os.WriteFileによるファイル書き込み、os.ReadFileによるファイル読み込み、そしてos.OpenFileを使った追記処理などは、Go言語のファイル入出力における代表的な処理です。

ファイル操作を理解するうえで重要なのは、データがbyte型で扱われるという点です。文字列として扱うためにはstringへの変換が必要であり、この仕組みを理解することでエラーの原因も把握しやすくなります。また、ファイル権限の設定やパスの指定など、初心者がつまずきやすいポイントについても押さえておくことで、より安定したプログラムを書くことができます。

さらに、ファイルが存在するかどうかの確認やエラー処理の重要性も学びました。Go言語ではエラーを無視せず、必ず確認することが推奨されています。これは安全で信頼性の高いプログラムを作るために欠かせない考え方です。os.Statを使った存在確認や、err変数によるエラーハンドリングは、日常的に使う重要なテクニックです。

以前のioutilパッケージは便利な関数をまとめたものでしたが、現在は非推奨となり、osやioへと機能が分割されています。しかし、ReadFileやWriteFileといった関数名はそのまま引き継がれているため、移行は比較的簡単です。これからGo言語を学ぶ方は、最初から新しい書き方に慣れておくことで、将来的なメンテナンスや実務にも対応しやすくなります。

ファイル操作はログ出力、設定ファイルの読み込み、データ保存など、あらゆる開発シーンで利用されます。そのため、今回学んだ内容は単なる基礎ではなく、実践的なスキルとして非常に価値があります。Go言語のファイル操作をしっかり理解することで、より高度なアプリケーション開発へとステップアップできるでしょう。

サンプルプログラムで復習


package main

import (
    "fmt"
    "os"
)

func main() {
    fileName := "sample.txt"

    data := []byte("Go言語ファイル操作のまとめ")
    err := os.WriteFile(fileName, data, 0644)
    if err != nil {
        fmt.Println("書き込みエラー")
        return
    }

    readData, err := os.ReadFile(fileName)
    if err != nil {
        fmt.Println("読み込みエラー")
        return
    }

    fmt.Println(string(readData))
}

Go言語ファイル操作のまとめ
先生と生徒の振り返り会話

生徒

「Go言語のファイル操作って難しそうでしたが、基本は意外とシンプルですね。」

先生

「その通りです。os.WriteFileやos.ReadFileを使えば、初心者でもすぐにファイルの読み書きができます。」

生徒

「byteとstringの違いが少し難しかったですが、変換すればよいと分かりました。」

先生

「そこは重要なポイントです。データの扱い方を理解すると、エラーにも強くなります。」

生徒

「あとエラー処理も必ず書く必要があるんですね。」

先生

「はい。Go言語ではエラー確認が基本です。安全なプログラムを書くために欠かせません。」

生徒

「ioutilからosやioに変わった理由も理解できました。」

先生

「これからは新しい書き方を覚えておけば問題ありません。実務でもその知識が役立ちます。」

生徒

「ファイル操作はログやデータ保存にも使えるので、しっかり復習しておきます。」

先生

「とても良い姿勢です。基礎を固めることで、より高度な開発にも挑戦できるようになります。」

関連セミナーのご案内

【超入門】ゼロから始めるGo言語プログラミング:最速で「動くアプリ」を作るマンツーマン指導

「プログラミングの仕組み」が根本からわかる。Go言語でバックエンド開発の第一歩を。

本講座を受講することで、単なる文法の暗記ではなく、「プログラムがコンピュータの中でどう動いているか」という本質的な理解につながります。シンプルながら強力なGo言語(Golang)を通じて、現代のバックエンドエンジニアに求められる基礎体力を最短距離で身につけます。

具体的な開発内容と環境

【つくるもの】
ターミナル(黒い画面)上で動作する「対話型計算プログラム」や、データを整理して表示する「ミニ・ツール」をゼロから作成します。自分の書いたコードが形になる感動を体験してください。

【開発環境】
プロの現場でシェアNo.1のVisual Studio Code (VS Code)を使用します。インストールから日本語化、Go言語用の拡張機能設定まで、現場基準の環境を一緒に構築します。

この60分で得られる3つの理解

1. 環境構築の完全な理解

「なぜ動くのか」という設定の仕組みを理解し、今後の独学で詰まらない土台を作ります。

2. Go言語の基本構造(変数・型)

データの種類やメモリの概念など、他言語にも通じるプログラミングの本質を学びます。

3. 読みやすいコードの書き方

ただ動くだけでなく、誰が見ても分かりやすい「綺麗なコード」を書くための考え方を伝授します。

※本講座は、将来的にバックエンドエンジニアクラウドインフラに興味がある未経験者のためのエントリー講座です。マンツーマン形式により、あなたの理解度に合わせて進行します。

セミナー画像

初めてのGo言語を一緒に学びましょう!

カテゴリの一覧へ
新着記事
New1
Kotlin
Kotlinのクラスドキュメントコメントの書き方ガイド|初心者でもわかるKDocの基本と書き方
New2
Go言語
Go言語の関数設計パターン集!可読性と再利用性を高めよう
New3
Go言語
Go言語のインターフェースと抽象化の考え方を初心者向けに解説
New4
Kotlin
Kotlinのsorted・sortedByでコレクションをソートする方法【初心者向け完全ガイド】
人気記事
No.1
Java&Spring記事人気No1
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.2
Java&Spring記事人気No2
Swift
Swift入門ガイド|基本構文と書き方をマスターしよう
No.3
Java&Spring記事人気No3
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.4
Java&Spring記事人気No4
Kotlin
Kotlinで画面遷移を実装しよう!初心者でもわかるIntentの使い方完全ガイド
No.5
Java&Spring記事人気No5
Go言語
Go言語のマルチステージビルド完全解説!Dockerで軽量なコンテナを作る方法
No.6
Java&Spring記事人気No6
Kotlin
Kotlinの可視性修飾子を完全ガイド!public・private・internalの意味と使い分けを初心者向けに解説
No.7
Java&Spring記事人気No7
Go言語
Go言語の構造体を使った設計パターン集(DTO・VOなど)
No.8
Java&Spring記事人気No8
Kotlin
Kotlinのインストール方法まとめ!Windows・Mac・Linux別にステップ解説