2 回答
TA贡献1802条经验 获得超5个赞
package main
import (
"fmt"
"io"
"log"
"os"
)
func main() {
file, err := os.Create("myfile")
if err != nil {
log.Fatal(err)
}
mw := io.MultiWriter(os.Stdout, file)
fmt.Fprintln(mw, "This line will be written to stdout and also to a file")
}
TA贡献2080条经验 获得超4个赞
使用fmt.Fprint()要保存到文件的调用的方法。还有fmt.Fprintf()和fmt.Fprintln()。
这些函数将目标io.Writer作为第一个参数,您可以将文件 ( *os.File) 传递给该目标。
例如:
f, err := os.Open("data.txt")
if err != nil {
log.Fatal(err)
}
defer f.Close()
fmt.Println("This goes to standard output.")
fmt.Fprintln(f, "And this goes to the file")
fmt.Fprintf(f, "Also to file, with some formatting. Time: %v, line: %d\n",
time.Now(), 2)
如果您希望所有fmt.PrintXX()调用都转到您无法控制的文件(例如,您无法更改它们,fmt.FprintXX()因为它们是另一个库的一部分),您可以os.Stdout临时更改,因此所有进一步fmt.PrintXX()的调用都将写入您设置的输出,例如:
// Temporarily set your file as the standard output (and save the old)
old, os.Stdout = os.Stdout, f
// Now all fmt.PrintXX() calls output to f
somelib.DoSomething()
// Restore original standard output
os.Stdout = old
- 2 回答
- 0 关注
- 159 浏览
添加回答
举报