有一个库导出文件,但我想捕获文件的内容.我想将一个编写器传递给库,并能够读取编写器写入文件的内容.最终我想扩充库以跳过编写此文件.这可能与io.Copy或io.Pipe一起使用吗?
库代码创建一个*文件,并将此句柄用作io.Writer.我尝试使用io.Copy,但只读取了0个字节.
func TestFileCopy(t *testing.T) {
codeFile, err := os.Create("test.txt")
if err != nil {
t.Error(err)
}
defer codeFile.Close()
codeFile.WriteString("Hello World")
n, err := io.Copy(os.Stdout, codeFile)
if err != nil {
t.Error(err)
}
log.Println(n, "bytes")
}
Run Code Online (Sandbox Code Playgroud)
如果要在写入时捕获字节,请使用io.MultiWritera bytes.Buffer作为第二个writer.
var buf bytes.Buffer
w := io.MultiWriter(codeFile, &buf)
Run Code Online (Sandbox Code Playgroud)
或者在stdout上看到文件:
w := io.MultiWriter(codeFile, os.Stdout)
Run Code Online (Sandbox Code Playgroud)
否则,如果要重新读取同一文件,则需要在写入后回头查看:
codeFile.Seek(0, 0)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
428 次 |
| 最近记录: |