<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # package tar `import "archive/tar"` tar包實現了tar格式壓縮文件的存取。本包目標是覆蓋大多數tar的變種,包括GNU和BSD生成的tar文件。 參見: ``` http://www.freebsd.org/cgi/man.cgi?query=tar&sektion=5 http://www.gnu.org/software/tar/manual/html_node/Standard.html http://pubs.opengroup.org/onlinepubs/9699919799/utilities/pax.html ``` Example ``` // Create a buffer to write our archive to. buf := new(bytes.Buffer) // Create a new tar archive. tw := tar.NewWriter(buf) // Add some files to the archive. var files = []struct { Name, Body string }{ {"readme.txt", "This archive contains some text files."}, {"gopher.txt", "Gopher names:\nGeorge\nGeoffrey\nGonzo"}, {"todo.txt", "Get animal handling licence."}, } for _, file := range files { hdr := &tar.Header{ Name: file.Name, Size: int64(len(file.Body)), } if err := tw.WriteHeader(hdr); err != nil { log.Fatalln(err) } if _, err := tw.Write([]byte(file.Body)); err != nil { log.Fatalln(err) } } // Make sure to check the error on Close. if err := tw.Close(); err != nil { log.Fatalln(err) } // Open the tar archive for reading. r := bytes.NewReader(buf.Bytes()) tr := tar.NewReader(r) // Iterate through the files in the archive. for { hdr, err := tr.Next() if err == io.EOF { // end of tar archive break } if err != nil { log.Fatalln(err) } fmt.Printf("Contents of %s:\n", hdr.Name) if _, err := io.Copy(os.Stdout, tr); err != nil { log.Fatalln(err) } fmt.Println() } ``` Output: ``` Contents of readme.txt: This archive contains some text files. Contents of gopher.txt: Gopher names: George Geoffrey Gonzo Contents of todo.txt: Get animal handling licence. ``` ## Index * [Constants](#pkg-constants) * [Variables](#pkg-variables) * [type Header](#Header) * [func FileInfoHeader(fi os.FileInfo, link string) (\*Header, error)](#FileInfoHeader) * [func (h \*Header) FileInfo() os.FileInfo](#Header.FileInfo) * [type Reader](#Reader) * [func NewReader(r io.Reader) \*Reader](#NewReader) * [func (tr \*Reader) Next() (\*Header, error)](#Reader.Next) * [func (tr \*Reader) Read(b []byte) (n int, err error)](#Reader.Read) * [type Writer](#Writer) * [func NewWriter(w io.Writer) \*Writer](#NewWriter) * [func (tw \*Writer) WriteHeader(hdr \*Header) error](#Writer.WriteHeader) * [func (tw \*Writer) Write(b []byte) (n int, err error)](#Writer.Write) * [func (tw \*Writer) Flush() error](#Writer.Flush) * [func (tw \*Writer) Close() error](#Writer.Close) ### Examples * [package](#example-package) ## Constants ``` const ( // 類型 TypeReg = '0' // 普通文件 TypeRegA = '\x00' // 普通文件 TypeLink = '1' // 硬鏈接 TypeSymlink = '2' // 符號鏈接 TypeChar = '3' // 字符設備節點 TypeBlock = '4' // 塊設備節點 TypeDir = '5' // 目錄 TypeFifo = '6' // 先進先出隊列節點 TypeCont = '7' // 保留位 TypeXHeader = 'x' // 擴展頭 TypeXGlobalHeader = 'g' // 全局擴展頭 TypeGNULongName = 'L' // 下一個文件記錄有個長名字 TypeGNULongLink = 'K' // 下一個文件記錄指向一個具有長名字的文件 TypeGNUSparse = 'S' // 稀疏文件 ) ``` ## Variables ``` var ( ErrWriteTooLong = errors.New("archive/tar: write too long") ErrFieldTooLong = errors.New("archive/tar: header field too long") ErrWriteAfterClose = errors.New("archive/tar: write after close") ) ``` ``` var ( ErrHeader = errors.New("archive/tar: invalid tar header") ) ``` ## type [Header](https://github.com/golang/go/blob/master/src/archive/tar/common.go#L46 "View Source") ``` type Header struct { Name string // 記錄頭域的文件名 Mode int64 // 權限和模式位 Uid int // 所有者的用戶ID Gid int // 所有者的組ID Size int64 // 字節數(長度) ModTime time.Time // 修改時間 Typeflag byte // 記錄頭的類型 Linkname string // 鏈接的目標名 Uname string // 所有者的用戶名 Gname string // 所有者的組名 Devmajor int64 // 字符設備或塊設備的major number Devminor int64 // 字符設備或塊設備的minor number AccessTime time.Time // 訪問時間 ChangeTime time.Time // 狀態改變時間 Xattrs map[string]string } ``` Header代表tar檔案文件里的單個頭。Header類型的某些字段可能未使用。 ### func [FileInfoHeader](https://github.com/golang/go/blob/master/src/archive/tar/common.go#L204 "View Source") ``` func FileInfoHeader(fi os.FileInfo, link string) (*Header, error) ``` FileInfoHeader返回一個根據fi填寫了部分字段的Header。?如果fi描述一個符號鏈接,FileInfoHeader函數將link參數作為鏈接目標。如果fi描述一個目錄,會在名字后面添加斜杠。因為os.FileInfo接口的Name方法只返回它描述的文件的無路徑名,有可能需要將返回值的Name字段修改為文件的完整路徑名。 ### func (\*Header) [FileInfo](https://github.com/golang/go/blob/master/src/archive/tar/common.go#L71 "View Source") ``` func (h *Header) FileInfo() os.FileInfo ``` FileInfo返回該Header對應的文件信息。(os.FileInfo類型) ## type [Reader](https://github.com/golang/go/blob/master/src/archive/tar/reader.go#L31 "View Source") ``` type Reader struct { // 內含隱藏或非導出字段 } ``` Reader提供了對一個tar檔案文件的順序讀取。一個tar檔案文件包含一系列文件。Next方法返回檔案中的下一個文件(包括第一個),返回值可以被視為io.Reader來獲取文件的數據。 ### func [NewReader](https://github.com/golang/go/blob/master/src/archive/tar/reader.go#L84 "View Source") ``` func NewReader(r io.Reader) *Reader ``` NewReader創建一個從r讀取的Reader。 ### func (\*Reader) [Next](https://github.com/golang/go/blob/master/src/archive/tar/reader.go#L87 "View Source") ``` func (tr *Reader) Next() (*Header, error) ``` 轉入tar檔案文件下一記錄,它會返回下一記錄的頭域。 ### func (\*Reader) [Read](https://github.com/golang/go/blob/master/src/archive/tar/reader.go#L726 "View Source") ``` func (tr *Reader) Read(b []byte) (n int, err error) ``` 從檔案文件的當前記錄讀取數據,到達記錄末端時返回(0, EOF),直到調用Next方法轉入下一記錄。 ## type [Writer](https://github.com/golang/go/blob/master/src/archive/tar/writer.go#L34 "View Source") ``` type Writer struct { // 內含隱藏或非導出字段 } ``` Writer類型提供了POSIX.1格式的tar檔案文件的順序寫入。一個tar檔案文件包含一系列文件。調用WriteHeader來寫入一個新的文件,然后調用Write寫入文件的數據,該記錄寫入的數據不能超過hdr.Size字節。 ### func [NewWriter](https://github.com/golang/go/blob/master/src/archive/tar/writer.go#L45 "View Source") ``` func NewWriter(w io.Writer) *Writer ``` NewWriter創建一個寫入w的\*Writer。 ### func (\*Writer) [WriteHeader](https://github.com/golang/go/blob/master/src/archive/tar/writer.go#L136 "View Source") ``` func (tw *Writer) WriteHeader(hdr *Header) error ``` WriteHeader寫入hdr并準備接受文件內容。如果不是第一次調用本方法,會調用Flush。在Close之后調用本方法會返回ErrWriteAfterClose。 ### func (\*Writer) [Write](https://github.com/golang/go/blob/master/src/archive/tar/writer.go#L343 "View Source") ``` func (tw *Writer) Write(b []byte) (n int, err error) ``` Write向tar檔案文件的當前記錄中寫入數據。如果寫入的數據總數超出上一次調用WriteHeader的參數hdr.Size字節,返回ErrWriteTooLong錯誤。 ### func (\*Writer) [Flush](https://github.com/golang/go/blob/master/src/archive/tar/writer.go#L48 "View Source") ``` func (tw *Writer) Flush() error ``` Flush結束當前文件的寫入。(可選的) ### func (\*Writer) [Close](https://github.com/golang/go/blob/master/src/archive/tar/writer.go#L365 "View Source") ``` func (tw *Writer) Close() error ``` Close關閉tar檔案文件,會將緩沖中未寫入下層的io.Writer接口的數據刷新到下層。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看