ホームページ >バックエンド開発 >Golang >Go で Tar ファイルの内容を文字列として読み取るにはどうすればよいですか?

Go で Tar ファイルの内容を文字列として読み取るにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-04 08:58:15257ブラウズ

How Can I Read the Contents of a Tar File as Strings in Go?

tar ファイルの内容を文字列として読み取る

tar ファイルを操作する場合、解凍せずにファイルの内容にアクセスする必要が生じる場合があります。ディスクに。これを行うには、Go 標準ライブラリの archive/tar パッケージによって提供される機能を利用できます。

提供したコード例をもう一度見てみましょう:

package main

import (
    "archive/tar"
    "fmt"
    "io"
    "log"
    "os"
    "bytes"
    "compress/gzip"
)

func main() {
    file, err := os.Open("testtar.tar.gz")

    archive, err := gzip.NewReader(file)

    if err != nil {
        fmt.Println("There is a problem with os.Open")
    }
    tr := tar.NewReader(archive)

    for {
        hdr, err := tr.Next()
        if err == io.EOF {
            break
        }
        if err != nil {
            log.Fatal(err)
        }

        fmt.Printf("Contents of %s:\n", hdr.Name)
    }
}

目的は、変更することです。このコードは、tar ファイル内のファイルの内容を読み取り、文字列として出力します。これを実現するには、アクセスしたいファイルごとに tar.Reader を io.Reader として扱うことができます。

まず、h, _ := tr.Next( )。次に、bs, _ := ioutil.ReadAll(tr) を使用してファイルの内容全体をバイト スライスに読み取り、s := string(bs) を使用して文字列に変換できます。

または、次のようにします。内容を 1 行ずつ読み取る必要がある場合は、次のようにスキャナーを使用できます。

s := bufio.NewScanner(tr)
for s.Scan() {
    l := s.Text()
    // ...do something with the line l
}

if s.Err() != nil {
    // handle any errors encountered while reading
}

これらの技術を採用することで、シームレスにアクセスし、 tar ファイルの内容を文字列として読み取ることで、データを効果的に操作および処理できるようになります。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。