Membaca Kandungan Fail Tar sebagai Rentetan
Apabila bekerja dengan fail tar, anda mungkin menghadapi keperluan untuk mengakses kandungan failnya tanpa menyahzipnya ke cakera. Untuk melakukan ini, anda boleh memanfaatkan kefungsian yang disediakan oleh pakej arkib/tar dalam pustaka standard Go.
Mari kita lihat semula contoh kod yang anda berikan:
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) } }
Matlamatnya adalah untuk mengubah suai kod ini untuk membaca kandungan fail dalam fail tar dan mencetaknya sebagai rentetan. Untuk mencapai matlamat ini, kita boleh menganggap tar.Reader sebagai io.Reader untuk setiap fail yang ingin kita akses.
Pertama, kita akan mendapat entri fail seterusnya menggunakan h, _ := tr.Next( ). Kemudian, kita boleh membaca keseluruhan kandungan fail ke dalam kepingan bait dengan bs, _ := ioutil.ReadAll(tr) dan menukarnya kepada rentetan dengan s := string(bs).
Sebagai alternatif, jika anda perlu membaca kandungan baris demi baris, anda boleh menggunakan pengimbas seperti berikut:
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 }
Dengan menggunakan teknik ini, anda boleh dengan lancar akses dan baca kandungan fail tar sebagai rentetan, membolehkan anda bekerja dengan dan memproses datanya dengan berkesan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membaca Kandungan Fail Tar sebagai Rentetan dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!