在Go中将io.ReadCloser转换为io.Reader



我正在使用archive/zip库,在上传到s3之前,我需要对zip档案中的文件进行动态修改。目前我正在返回一个io.ReadCloser,但我用来修改用户的功能需要一个io.Reader:

//Function Signature:
Convert(r io.Reader, w io.Writer, ...)

我还需要一个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
.....
}   
}   
}
  1. 要将io.ReadCloser转换为io.Reader,请执行以下操作:

    什么都没有

    由于io.Reader接口的所有方法(特别是Read(p []byte) (n int, err error)方法(也由io.ReadCloser提供,io.ReadCloser已经是io.Reader

  2. io.Reader转换为io.Writer是完全不同的事情。你真的不能用任何一般的方式做到这一点。你需要详细说明你想做什么

相关内容

  • 没有找到相关文章

最新更新