GZIP Writer 폐쇄를 연기하면 데이터가 손실됩니다
배경:
gzip으로 작업할 때 gzip 활용 .NewWriter를 사용하여 데이터를 압축하고 Close()를 연기하여 작성기를 닫으면 압축된 데이터가 손실될 수 있습니다.
문제:
GZIP 작성기 닫기를 연기하면 GZIP 바닥글의 닫기 함수 문서에 지정된 대로:
Close closes the Writer by flushing any unwritten data to the underlying io.Writer and writing the GZIP footer. It does not close the underlying io.Writer.
해결책:
데이터 손실을 방지하려면 압축된 데이터를 반환하기 전에 GZIP 기록기를 닫습니다.
<code class="go">func zipData(originData []byte) ([]byte, error) { var bf bytes.Buffer gw := gzip.NewWriter(&bf) _, err := gw.Write(originData) if err != nil { return nil, errors.New(fmt.Sprintf("gzip data err: %v", err)) } err = gw.Flush() if err != nil { return nil, err } if err := gw.Close(); err != nil { return nil, errors.New(fmt.Sprintf("close data err: %v", err)) } return bf.Bytes(), nil }</code>
위 내용은 GZIP 작성기 폐쇄를 연기하면 데이터가 손실되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!