2016-11-08 12 views
0

特定のfmt.Print文が.txtファイルに保存されます。Golangのテキストファイルにfmt.Print出力を取り込む方法

私はすべての印刷文章を保存したくありません。これはできますか?

+0

ます。https:// GOL ang.org/pkg/log/#New –

+0

ありがとうございますが、私はログに記録していません。これらは印刷文 – aaj

+0

です。それを逃した。しかし、それは同じです。[concept。](https://golang.org/pkg/fmt/#Fprint) –

答えて

2
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") 
} 
1

ファイルに保存するコールにはfmt.Fprint()メソッドを使用します。 fmt.Fprintf()fmt.Fprintln()もあります。

これらの関数は、ファイル*os.Fileを渡すことができる最初の引数として宛先io.Writerを使用します。例えば

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()にそれらを変更することはできません)あなたは何のコントロールの上に持っていないファイルに行きたい場合は、あなたはとてもすべて、さらにfmt.PrintXX()のコールが設定した出力、例えばに書き込みますが、一時的にos.Stdoutを変更することがあります。

// 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 
関連する問題