はじめに
- 当記事は、Go言語のファイル読み込み、書き出しの方法を記載しております。
注意点
-
読者の知識レベルは、以下の方を想定しております。
- プログラミングの基礎的な知識がある
- 変数とは何か、関数とは何か
- 変数や関数を定義できるか
- 何か言語を触ったことがある
- C言語やJava言語、Python言語など
- プログラミングの基礎的な知識がある
-
上手く実施できなかった場合や、不明な点がある際は、コメントを記載していただければ幸いです。
実行環境
- OS
- Windows10 Pro 64-bit
- エディタ
- VisualStudio Code
- 作業ディレクトリ
- C:\Users\Romeo\Documents\go
ファイル読み込み
事前準備
- 今回は、テキストファイルの読み込みを実施するので、先にファイルを用意しておきましょう。
- "C:\Users\Romeo\Documents\go"配下に、test.txtを作成します。
- 内容は何でも良いですが、私は以下のように作成しました。
test.txt
Hi.
This is a test file.
ソースコード
- FileRead.goを新規作成し、以下の内容を格納します。
FileRead.go
package main
import (
"fmt"
"log"
"os"
)
const BUFSIZE = 1024 //読み込む際のバッファサイズ指定
func main() {
file, err := os.Open(`C:\Users\Romeo\Documents\test.txt`) //ファイルオープン
if err != nil {
log.Fatal(err) //ファイルが開けなかったときエラー出力
}
defer file.Close() //全部の処理終了後にファイルクローズ
buf := make([]byte, BUFSIZE) //byte型配列に格納
for { //繰り返し読み込み
n, err := file.Read(buf) //ファイル読み込み
if n == 0 {
break //中身がなくなったらbreak
}
if err != nil {
log.Fatal(err)
break //ファイル読み込みに失敗したらbreak
}
fmt.Printf(string(buf[:n])) //読み込んだ内容を出力
}
}
実行結果
C:\Users\Romeo\Documents\go> go run FileRead.go
Hi.
This is a test file.
ソースコード解説
-
基本的には、よくあるファイル読み込みアルゴリズムと同じだと思います。
-
今回インポートしたパッケージは3つです。
- fmt
- 標準出力のため
- log
- エラー出力のため
- os
- ファイルを取り扱うため
- fmt
-
ファイルオープン時には、エラー変数が返ってきます。しっかり受け取り、エラー処理まで記載しましょう。
- deferにファイルクローズ関数を記載することを忘れずに
一部抜粋
file, err := os.Open(`C:\Users\Romeo\Documents\test.txt`) //ファイルオープン
if err != nil {
log.Fatal(err) //ファイルが開けなかったときエラー出力
}
defer file.Close() //ファイルクローズ
ファイル書き込み
ソースコード
- FileWrite.goを新規作成し、以下の内容を格納します。
- 今回のプログラムでは、test2.txtを新規作成し、そこに"testmessage"を書き込みます。
FileWrite.go
package main
import (
"os"
)
func main() {
file, err := os.Create(`C:\Users\Romeo\Documents\test2.txt`)
if err != nil {
log.Fatal(err) //ファイルが開けなかったときエラー出力
}
defer file.Close()
output := "testmessage"
file.Write(([]byte)(output))
}
実行結果
test2.txt
testmessage
ソースコード解説
- こちらも、よくあるアルゴリズムだと思います。
- outputという変数に、書き込みたい内容を記載しております。
最後に
- 変数定義やエラー出力など、慣れない点も多々ありました。
- ファイル読み書きは初歩中の初歩なので、これをベースに更に勉学に励みます。