Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
os.Open() / Create() / Remove()
ファイルの開閉・作成・削除を行う『os』パッケージの基本的な関数です。低レベルなファイル操作を提供し、読み書きや削除をシンプルに扱えます。
構文
// ファイルを開く(読み取り専用)
f, err := os.Open("ファイルパス")
// ファイルを作成または上書き(書き込み用)
f, err := os.Create("ファイルパス")
// フラグと権限を指定してファイルを開く
f, err := os.OpenFile("ファイルパス", os.O_RDWR|os.O_CREATE, 0644)
// ファイルを削除する
err := os.Remove("ファイルパス")
// ファイルを閉じる(必ず defer で呼び出す)
defer f.Close()
関数一覧
| 関数 | 概要 |
|---|---|
| os.Open(name) | 読み取り専用でファイルを開きます。ファイルが存在しない場合はエラーを返します。 |
| os.Create(name) | ファイルを新規作成します。既存のファイルがあれば中身を空にして上書きします。 |
| os.OpenFile(name, flag, perm) | フラグと権限を指定してファイルを開きます。読み書きモードや追記モードなど細かく制御できます。 |
| os.Remove(name) | ファイルまたは空のディレクトリを削除します。 |
| f.Close() | ファイルを閉じます。開いたファイルは必ず閉じる必要があります。 |
サンプルコード
package main
import (
"fmt"
"os"
)
func main() {
// ファイルを新規作成して文字列を書き込む
f, err := os.Create("hello.txt")
if err != nil {
fmt.Println("作成エラー:", err)
return
}
defer f.Close()
f.WriteString("Hello, Go!\n")
fmt.Println("hello.txt を作成しました")
// ファイルを読み取り専用で開く
r, err := os.Open("hello.txt")
if err != nil {
fmt.Println("オープンエラー:", err)
return
}
defer r.Close()
// 内容を読み込む
buf := make([]byte, 64)
n, _ := r.Read(buf)
fmt.Printf("読み込み内容: %s", buf[:n])
// ファイルを削除する
err = os.Remove("hello.txt")
if err != nil {
fmt.Println("削除エラー:", err)
return
}
fmt.Println("hello.txt を削除しました")
}
概要
『os.Open()』は読み取り専用、『os.Create()』は書き込み用のショートカット関数です。細かい制御が必要な場合は『os.OpenFile()』を使い、フラグに『os.O_RDWR』(読み書き)や『os.O_APPEND』(追記)を組み合わせます。
ファイルを開いたら必ず『defer f.Close()』を呼び出してリソースを解放してください。Close()を忘れるとファイルディスクリプタがリークし、長時間稼働するプログラムで問題になります。ファイルの一括読み書きには『os.ReadFile() / WriteFile()』がより簡便です。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。