Go でファイルを文字列に読み込む
Musfirah Waseem
2023年6月20日
-
Go で
ioutil.ReadFile()
メソッドを使用する -
Go で
File.Read()
メソッドを使用する -
Go で
buf.ReadFrom()
メソッドを使用する -
Go で
strings.Builder
メソッドを使用する
GoLang には多くの ファイル操作 ツールが用意されており、その 1つがファイルを文字列に読み込む方法です。 ioutil.ReadFile()
、File.Read()
、buf.ReadFrom()
、および strings.Builder
は、ファイルの内容を効率的に 弦。
Go で ioutil.ReadFile()
メソッドを使用する
package main
import
(
"fmt"
"io/ioutil"
)
func main() {
inputData := []byte("Hello, World!")
err := ioutil.WriteFile("File.txt", inputData, 0777)
Data, err := ioutil.ReadFile("File.txt")
if err != nil {
fmt.Println(err)
}
fmt.Print(string(Data))
}
出力:
Hello, World!
上記のコードにより、新しいファイルを作成してデータを書き込むことができます。 作成されたファイルは、ioutil.ReadFile()
メソッドを使用して読み取られます。
Go で File.Read()
メソッドを使用する
package main
import (
"fmt"
"io/ioutil"
"log"
"os"
"io"
)
func main() {
inputData := []byte("Hello, World!")
err := ioutil.WriteFile("file.txt", inputData, 0777)
f, err := os.Open("file.txt")
if err != nil {
log.Fatalf("Error in reading file: %v", err)
}
defer f.Close()
buf := make([]byte, 1024)
for {
n, err := f.Read(buf)
if err == io.EOF {
break
}
if err != nil {
fmt.Println(err)
continue
}
if n > 0 {
fmt.Println(string(buf[:n]))
}
}
}
出力:
Hello, World!
上記のコードでは、ファイルを分割して読み込んでいます。 毎回読みたいバッファサイズを指定すると、len(buf)
だけがメモリに割り当てられます。
ファイルは、反復ごとに分割されて読み取られます。 この方法は主に、ファイルの内容がメモリに完全に収まらない大きなファイルに使用されます。
Go で buf.ReadFrom()
メソッドを使用する
package main
import (
"fmt"
"io/ioutil"
"os"
"bytes"
"log"
)
func main() {
inputData := []byte("Hello, World!")
err := ioutil.WriteFile("File.txt", inputData, 0777)
f, err := os.Open("File.txt")
if err != nil{
log.Fatal(err)
}
defer f.Close()
buf := new(bytes.Buffer)
buf.ReadFrom(f)
data := buf.String()
fmt.Print(data)
}
出力:
Hello, World!
上記のコードでは、EOF
までファイルからデータを読み取り、それをバッファに追加する buf.ReadFrom()
を使用しました。 バッファ サイズは必要に応じて増加します。
Go で strings.Builder
メソッドを使用する
package main
import (
"io/ioutil"
"io"
"os"
"strings"
)
func main() {
inputData := []byte("Hello, World!")
err := ioutil.WriteFile("file.txt", inputData, 0777)
f, err := os.Open("file.txt")
if err != nil {
panic(err)
}
defer f.Close()
b := new(strings.Builder)
io.Copy(b, f)
print(b.String())
}
出力:
Hello, World!
上記のコードでは、strings.Builder
で文字列を連結しています。 データは、ファイルから 1つずつ読み込まれ、まとめられて印刷されます。
著者: Musfirah Waseem
Musfirah is a student of computer science from the best university in Pakistan. She has a knack for programming and everything related. She is a tech geek who loves to help people as much as possible.
LinkedIn