<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # package zip `import "archive/zip"` zip包提供了zip檔案文件的讀寫服務。參見[http://www.pkware.com/documents/casestudies/APPNOTE.TXT](http://www.pkware.com/documents/casestudies/APPNOTE.TXT) 本包不支持跨硬盤的壓縮。 關于ZIP64: 為了向下兼容,FileHeader同時擁有32位和64位的Size字段。64位字段總是包含正確的值,對普通格式的檔案未見它們的值是相同的。對zip64格式的檔案文件32位字段將是0xffffffff,必須使用64位字段。 ## Index * [Constants](#pkg-constants) * [Variables](#pkg-variables) * [type Compressor](#Compressor) * [type Decompressor](#Decompressor) * [func RegisterCompressor(method uint16, comp Compressor)](#RegisterCompressor) * [func RegisterDecompressor(method uint16, d Decompressor)](#RegisterDecompressor) * [type FileHeader](#FileHeader) * [func FileInfoHeader(fi os.FileInfo) (\*FileHeader, error)](#FileInfoHeader) * [func (h \*FileHeader) FileInfo() os.FileInfo](#FileHeader.FileInfo) * [func (h \*FileHeader) Mode() (mode os.FileMode)](#FileHeader.Mode) * [func (h \*FileHeader) SetMode(mode os.FileMode)](#FileHeader.SetMode) * [func (h \*FileHeader) ModTime() time.Time](#FileHeader.ModTime) * [func (h \*FileHeader) SetModTime(t time.Time)](#FileHeader.SetModTime) * [type File](#File) * [func (f \*File) DataOffset() (offset int64, err error)](#File.DataOffset) * [func (f \*File) Open() (rc io.ReadCloser, err error)](#File.Open) * [type Reader](#Reader) * [func NewReader(r io.ReaderAt, size int64) (\*Reader, error)](#NewReader) * [type ReadCloser](#ReadCloser) * [func OpenReader(name string) (\*ReadCloser, error)](#OpenReader) * [func (rc \*ReadCloser) Close() error](#ReadCloser.Close) * [type Writer](#Writer) * [func NewWriter(w io.Writer) \*Writer](#NewWriter) * [func (w \*Writer) CreateHeader(fh \*FileHeader) (io.Writer, error)](#Writer.CreateHeader) * [func (w \*Writer) Create(name string) (io.Writer, error)](#Writer.Create) * [func (w \*Writer) Close() error](#Writer.Close) ### Examples * [Reader](#example-Reader) * [Writer](#example-Writer) ## Constants ``` const ( Store uint16 = 0 Deflate uint16 = 8 ) ``` 預定義壓縮算法。 ## Variables ``` var ( ErrFormat = errors.New("zip: not a valid zip file") ErrAlgorithm = errors.New("zip: unsupported compression algorithm") ErrChecksum = errors.New("zip: checksum error") ) ``` ## type [Compressor](https://github.com/golang/go/blob/master/src/archive/zip/register.go#L17 "View Source") ``` type Compressor func(io.Writer) (io.WriteCloser, error) ``` Compressor函數類型會返回一個io.WriteCloser,該接口會將數據壓縮后寫入提供的接口。關閉時,應將緩沖中的數據刷新到下層接口中。 ## type [Decompressor](https://github.com/golang/go/blob/master/src/archive/zip/register.go#L23 "View Source") ``` type Decompressor func(io.Reader) io.ReadCloser ``` Decompressor函數類型會返回一個io.ReadCloser,?該接口的Read方法會將讀取自提供的接口的數據提前解壓縮。程序員有責任在讀取結束時關閉該io.ReadCloser。 ## func [RegisterCompressor](https://github.com/golang/go/blob/master/src/archive/zip/register.go#L90 "View Source") ``` func RegisterCompressor(method uint16, comp Compressor) ``` RegisterCompressor使用指定的方法ID注冊一個Compressor類型函數。常用的方法Store和Deflate是內建的。 ## func [RegisterDecompressor](https://github.com/golang/go/blob/master/src/archive/zip/register.go#L78 "View Source") ``` func RegisterDecompressor(method uint16, d Decompressor) ``` RegisterDecompressor使用指定的方法ID注冊一個Decompressor類型函數。 ## type [FileHeader](https://github.com/golang/go/blob/master/src/archive/zip/struct.go#L70 "View Source") ``` type FileHeader struct { // Name是文件名,它必須是相對路徑,不能以設備或斜杠開始,只接受'/'作為路徑分隔符 Name string CreatorVersion uint16 ReaderVersion uint16 Flags uint16 Method uint16 ModifiedTime uint16 // MS-DOS時間 ModifiedDate uint16 // MS-DOS日期 CRC32 uint32 CompressedSize uint32 // 已棄用;請使用CompressedSize64 UncompressedSize uint32 // 已棄用;請使用UncompressedSize64 CompressedSize64 uint64 UncompressedSize64 uint64 Extra []byte ExternalAttrs uint32 // 其含義依賴于CreatorVersion Comment string } ``` FileHeader描述zip文件中的一個文件。參見zip的定義獲取細節。 ### func [FileInfoHeader](https://github.com/golang/go/blob/master/src/archive/zip/struct.go#L120 "View Source") ``` func FileInfoHeader(fi os.FileInfo) (*FileHeader, error) ``` FileInfoHeader返回一個根據fi填寫了部分字段的Header。因為os.FileInfo接口的Name方法只返回它描述的文件的無路徑名,有可能需要將返回值的Name字段修改為文件的完整路徑名。 ### func (\*FileHeader) [FileInfo](https://github.com/golang/go/blob/master/src/archive/zip/struct.go#L94 "View Source") ``` func (h *FileHeader) FileInfo() os.FileInfo ``` FileInfo返回一個根據h的信息生成的os.FileInfo。 ### func (\*FileHeader) [Mode](https://github.com/golang/go/blob/master/src/archive/zip/struct.go#L209 "View Source") ``` func (h *FileHeader) Mode() (mode os.FileMode) ``` Mode返回h的權限和模式位。 ### func (\*FileHeader) [SetMode](https://github.com/golang/go/blob/master/src/archive/zip/struct.go#L223 "View Source") ``` func (h *FileHeader) SetMode(mode os.FileMode) ``` SetMode修改h的權限和模式位。 ### func (\*FileHeader) [ModTime](https://github.com/golang/go/blob/master/src/archive/zip/struct.go#L179 "View Source") ``` func (h *FileHeader) ModTime() time.Time ``` 返回最近一次修改的UTC時間。(精度2s) ### func (\*FileHeader) [SetModTime](https://github.com/golang/go/blob/master/src/archive/zip/struct.go#L185 "View Source") ``` func (h *FileHeader) SetModTime(t time.Time) ``` 將ModifiedTime和ModifiedDate字段設置為給定的UTC時間。(精度2s) ## type [File](https://github.com/golang/go/blob/master/src/archive/zip/reader.go#L34 "View Source") ``` type File struct { FileHeader // 內含隱藏或非導出字段 } ``` ### func (\*File) [DataOffset](https://github.com/golang/go/blob/master/src/archive/zip/reader.go#L122 "View Source") ``` func (f *File) DataOffset() (offset int64, err error) ``` DataOffset返回文件的可能存在的壓縮數據相對于zip文件起始的偏移量。大多數調用者應使用Open代替,該方法會主動解壓縮數據并驗證校驗和。 ### func (\*File) [Open](https://github.com/golang/go/blob/master/src/archive/zip/reader.go#L132 "View Source") ``` func (f *File) Open() (rc io.ReadCloser, err error) ``` Open方法返回一個io.ReadCloser接口,提供讀取文件內容的方法。可以同時讀取多個文件。 ## type [Reader](https://github.com/golang/go/blob/master/src/archive/zip/reader.go#L23 "View Source") ``` type Reader struct { File []*File Comment string // 內含隱藏或非導出字段 } ``` Example ``` // Open a zip archive for reading. r, err := zip.OpenReader("testdata/readme.zip") if err != nil { log.Fatal(err) } defer r.Close() // Iterate through the files in the archive, // printing some of their contents. for _, f := range r.File { fmt.Printf("Contents of %s:\n", f.Name) rc, err := f.Open() if err != nil { log.Fatal(err) } _, err = io.CopyN(os.Stdout, rc, 68) if err != nil { log.Fatal(err) } rc.Close() fmt.Println() } ``` Output: ``` Contents of README: This is the source code repository for the Go programming language. ``` ### func [NewReader](https://github.com/golang/go/blob/master/src/archive/zip/reader.go#L67 "View Source") ``` func NewReader(r io.ReaderAt, size int64) (*Reader, error) ``` NewReader返回一個從r讀取數據的\*Reader,r被假設其大小為size字節。 ## type [ReadCloser](https://github.com/golang/go/blob/master/src/archive/zip/reader.go#L29 "View Source") ``` type ReadCloser struct { Reader // 內含隱藏或非導出字段 } ``` ### func [OpenReader](https://github.com/golang/go/blob/master/src/archive/zip/reader.go#L46 "View Source") ``` func OpenReader(name string) (*ReadCloser, error) ``` OpenReader會打開name指定的zip文件并返回一個\*ReadCloser。 ### func (\*ReadCloser) [Close](https://github.com/golang/go/blob/master/src/archive/zip/reader.go#L113 "View Source") ``` func (rc *ReadCloser) Close() error ``` Close關閉zip文件,使它不能用于I/O。 ## type [Writer](https://github.com/golang/go/blob/master/src/archive/zip/writer.go#L20 "View Source") ``` type Writer struct { // 內含隱藏或非導出字段 } ``` Writer類型實現了zip文件的寫入器。 Example ``` // Create a buffer to write our archive to. buf := new(bytes.Buffer) // Create a new zip archive. w := zip.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.\nWrite more examples."}, } for _, file := range files { f, err := w.Create(file.Name) if err != nil { log.Fatal(err) } _, err = f.Write([]byte(file.Body)) if err != nil { log.Fatal(err) } } // Make sure to check the error on Close. err := w.Close() if err != nil { log.Fatal(err) } ``` ### func [NewWriter](https://github.com/golang/go/blob/master/src/archive/zip/writer.go#L33 "View Source") ``` func NewWriter(w io.Writer) *Writer ``` NewWriter創建并返回一個將zip文件寫入w的\*Writer。 ### func (\*Writer) [CreateHeader](https://github.com/golang/go/blob/master/src/archive/zip/writer.go#L183 "View Source") ``` func (w *Writer) CreateHeader(fh *FileHeader) (io.Writer, error) ``` 使用給出的\*FileHeader來作為文件的元數據添加一個文件進zip文件。本方法返回一個io.Writer接口(用于寫入新添加文件的內容)。新增文件的內容必須在下一次調用CreateHeader、Create或Close方法之前全部寫入。 ### func (\*Writer) [Create](https://github.com/golang/go/blob/master/src/archive/zip/writer.go#L170 "View Source") ``` func (w *Writer) Create(name string) (io.Writer, error) ``` 使用給出的文件名添加一個文件進zip文件。本方法返回一個io.Writer接口(用于寫入新添加文件的內容)。文件名必須是相對路徑,不能以設備或斜杠開始,只接受'/'作為路徑分隔。新增文件的內容必須在下一次調用CreateHeader、Create或Close方法之前全部寫入。 ### func (\*Writer) [Close](https://github.com/golang/go/blob/master/src/archive/zip/writer.go#L39 "View Source") ``` func (w *Writer) Close() error ``` Close方法通過寫入中央目錄關閉該\*Writer。本方法不會也沒辦法關閉下層的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>

                              哎呀哎呀视频在线观看