editor php Strawberry akan memperkenalkan anda kepada teknik yang sangat praktikal hari ini - membaca kandungan fail tar tanpa menyahmampatkannya ke cakera. Semasa proses pembangunan, kita selalunya perlu memproses fail tar, tetapi menyahmampatnya ke cakera dan kemudian membacanya akan mengambil banyak ruang dan masa cakera. Dengan menggunakan sambungan Archive_Tar PHP, kami boleh terus membaca kandungan fail tar, mengelakkan proses penyahmampatan yang membosankan, dan meningkatkan kecekapan kod. Seterusnya, mari belajar tentang langkah-langkah khusus!
Saya telah dapat mengulangi fail dalam fail tar, tetapi saya tidak pernah memikirkan cara membaca kandungan fail ini sebagai rentetan. Saya ingin tahu cara mencetak kandungan fail sebagai rentetan?
Ini kod saya
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) } }
Hanya gunakan tar.reader sebagai io.reader untuk setiap fail yang anda ingin baca.
tr := tar.newreader(r) // get the next file entry h, _ := tr.next()
Jika anda memerlukan keseluruhan fail sebagai rentetan:
// read the complete content of the file h.name into the bs []byte bs, _ := ioutil.readall(tr) // convert the []byte to a string s := string(bs)
Jika anda perlu membaca baris demi baris, ini lebih baik:
// create a Scanner for reading line by line s := bufio.NewScanner(tr) // line reading loop for s.Scan() { // read the current last read line of text l := s.Text() // ...and do something with l } // you should check for error at this point if s.Err() != nil { // handle it }
Atas ialah kandungan terperinci Baca kandungan fail tar tanpa mengekstrak ke cakera. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!