php小編草莓今天將為大家介紹一個非常實用的技巧-讀取 tar 檔案的內容而不解壓縮到磁碟。在開發過程中,我們經常需要處理 tar 文件,但解壓縮到磁碟後再讀取會佔用大量的磁碟空間和時間。透過使用PHP的Archive_Tar擴展,我們可以直接讀取 tar 檔案中的內容,避免解壓縮的繁瑣過程,並提高程式碼的效率。接下來,我們一起來了解具體的操作步驟吧!
我已經能夠循環遍歷 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.reader 用作您要讀取的每個檔案的 io.reader 即可。
tr := tar.newreader(r) // get the next file entry h, _ := tr.next()
如果您需要將整個文件作為字串:
// 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)
如果你需要逐行閱讀,那麼這樣會更好:
// 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 }
以上是讀取 tar 檔案的內容而不解壓縮到磁碟的詳細內容。更多資訊請關注PHP中文網其他相關文章!