Noa*_*ary 2 zip go writer reader
我正在使用该archive/zip库,并且需要在将 zip 存档内的文件上传到 s3 之前对其进行即时修改。目前我正在返回,io.ReadCloser但我用来修改用户的函数需要io.Reader:
//Function Signature:
Convert(r io.Reader, w io.Writer, ...)
Run Code Online (Sandbox Code Playgroud)
我还需要一个io.Writer……如果你能帮助我确定如何创建一个作家,我会加分。下面是一些示例代码,可以提供一些上下文:
for _, f := range r.File {
if filepath.Ext(f.Name) != ".txt" {
_, filename := path.Split(f.Name)
var rc io.ReadCloser
if rc, err = f.Open(); err == nil {
// FIXME: Convert
if err = Convert(rc.Reader, *zip.Writer.Create(f.Name), ...); err != nil {
errStr := fmt.Sprintf("Unable to convert")
log.Println(errStr)
} else {
log.Println("Success!")
}
// Upload to s3
.....
}
}
}
Run Code Online (Sandbox Code Playgroud)
Fli*_*mzy 11
要将 an 转换io.ReadCloser为 an,io.Reader您可以执行以下操作:
Anio.ReadCloser已经是 an io.Reader,因为io.Reader接口的所有方法(特别是Read(p []byte) (n int, err error)方法)也由 提供io.ReadCloser。
将 an 转换io.Reader为 anio.Writer是完全不同的事情。你不能以任何一般的方式真正做到这一点。您需要详细说明您想要做什么。