Go 言語でファイルを書き込む

GolangGolangBeginner
今すぐ練習

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Go言語でファイルを書き込む能力をテストします。文字列をファイルに書き込む方法やバイト列をファイルに書き込む方法、そしてバッファ付きライターを使う方法を学びます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL go(("Golang")) -.-> go/FileOperationsGroup(["File Operations"]) go/FileOperationsGroup -.-> go/writing_files("Writing Files") subgraph Lab Skills go/writing_files -.-> lab-15531{{"Go 言語でファイルを書き込む"}} end

ファイルの書き込み

文字列とバイト列をファイルに書き込み、バッファ付きライターを使用するGoプログラムを書かなければなりません。

  • プログラムは、文字列とバイト列をファイルに書き込む必要があります。
  • プログラムは、バッファ付きライターを使用する必要があります。
## ファイル書き込みコードを実行してみましょう。
$ go run writing-files.go
wrote 5 bytes
wrote 7 bytes
wrote 9 bytes

## 次に、書き込まれたファイルの内容を確認します。
$ cat /tmp/dat1
hello
go
$ cat /tmp/dat2
some
writes
buffered

## 次に、これまで見てきたファイルI/Oの考え方を
## `stdin` と `stdout` ストリームに適用してみましょう。

以下が完全なコードです。

// Go言語でファイルを書き込む方法は、
// 先ほど読み取りに使ったものと同じパターンになります。

package main

import (
	"bufio"
	"fmt"
	"os"
)

func check(e error) {
	if e!= nil {
		panic(e)
	}
}

func main() {

	// まずは、文字列を(または単にバイト列を)
	// ファイルに書き出す方法を見てみましょう。
	d1 := []byte("hello\ngo\n")
	err := os.WriteFile("/tmp/dat1", d1, 0644)
	check(err)

	// より細かい書き込みを行うには、書き込み用に
	// ファイルを開きます。
	f, err := os.Create("/tmp/dat2")
	check(err)

	// ファイルを開いた直後に `Close` を呼び出すのが
	// 慣例です。
	defer f.Close()

	// 予想通り、バイト列を `Write` できます。
	d2 := []byte{115, 111, 109, 101, 10}
	n2, err := f.Write(d2)
	check(err)
	fmt.Printf("wrote %d bytes\n", n2)

	// `WriteString` も利用できます。
	n3, err := f.WriteString("writes\n")
	check(err)
	fmt.Printf("wrote %d bytes\n", n3)

	// 書き込みを安定したストレージにフラッシュするには、
	// `Sync` を呼び出します。
	f.Sync()

	// `bufio` は、先ほど見たバッファ付きリーダーに加えて、
	// バッファ付きライターも提供しています。
	w := bufio.NewWriter(f)
	n4, err := w.WriteString("buffered\n")
	check(err)
	fmt.Printf("wrote %d bytes\n", n4)

	// すべてのバッファ操作が基礎となるライターに
	// 適用されることを確認するには、`Flush` を呼び出します。
	w.Flush()

}

まとめ

この実験では、Go言語で文字列をファイルに書き込む方法とバイト列をファイルに書き込む方法、そしてバッファ付きライターを使う方法を学びました。