2
有一個導出文件的庫,但我想捕獲該文件的內容。我想將作者傳遞給圖書館,並能夠閱讀作者寫入文件的內容。最終我想擴充庫來跳過寫這個文件。 這是可能與io.Copy或io.Pipe?從io.Writer寫入的內容中讀取內容
庫代碼創建一個*文件並將此句柄用作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")
}
或者因爲在這個例子中他希望在控制檯上輸出,所以他可以通過'os.Stdout'作爲第二個編寫器:'w:= io.MultiWriter(codeFile,os.Stdout)'。 – icza
「io.Multiwriter」文檔示例提供了有關使用情況的明確信息。首先使用'io.MultiWriter'設置所有編寫器,然後調用'io.Copy'。所以人們可以去'io.MultiWriter(codeFile,&buf,os.Stdout)' – Ravi