Go でテキスト ファイルの内容を読み取るにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-13 15:13:02
オリジナル
418 人が閲覧しました

How to Read the Contents of a Text File in Go?

Go でテキスト ファイルを読み取る方法

Go でテキスト ファイルを操作する場合、その内容を読み取る方法を理解することが不可欠です。ただし、「テキスト ファイルを読み取るにはどうすればよいですか? [重複]」という質問は、このタスクが見た目よりも複雑である可能性を示唆しています。

あなたが提供したコード:

package main

import (
    "fmt"
    "os"
    "log"
)

func main() {
    file, err := os.Open("file.txt")
    if err != nil {
        log.Fatal(err)
    }

    fmt.Print(file)
}
ログイン後にコピー

はファイルを正常に読み取りますが、出力は単なるファイル記述子 (*os.File) のポインター値です。実際にファイルの内容を取得するには、いくつかの手法のいずれかを使用する必要があります。

ファイルのコンテンツをメモリに読み取る

小さなファイルの場合、最も簡単な方法は、io/ioutil.ReadAll を使用して読み込むことです。ファイル全体をメモリに読み込みます。

func main() {
    file, err := os.Open("file.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    b, err := io.ReadAll(file)
    fmt.Print(b)
}
ログイン後にコピー

チャンクで読み込み

大きなファイルの場合は読み込みますチャンクはメモリ効率を高めることができます。

func main() {
    file, err := os.Open("file.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    buf := make([]byte, 32*1024)

    for {
        n, err := file.Read(buf)

        if n > 0 {
            fmt.Print(buf[:n])
        }

        if err == io.EOF {
            break
        }
        if err != nil {
            log.Printf("read %d bytes: %v", n, err)
            break
        }
    }
}
ログイン後にコピー

スキャナーの使用

最後に、bufio パッケージを使用して、区切り文字に基づいてトークンでファイルを読み取るスキャナーを作成できます。 (デフォルトでは改行).

func main() {
    file, err := os.Open("file.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    scanner := bufio.NewScanner(file)

    for scanner.Scan() {
        fmt.Println(scanner.Text())
        fmt.Println(scanner.Bytes())
    }
}
ログイン後にコピー

以上がGo でテキスト ファイルの内容を読み取るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート