将文件设置为
os.Stdin
操作系统。标准DIN
*os.File
)您可以根据自己的喜好对其进行修改,您可以为其指定一个新值。打开文件并将其分配给
操作系统。标准DIN
,
fmt.Scanf()
将直接从该文件中读取。有关详细信息,请参阅
Fill os.Stdin for function that reads from it
下面是一个完整的示例,它打开了一个名为
a.txt
,将其设置为
,然后调用
阅读
string
来自的值
操作系统。标准DIN
(间接来自
a、 txt文件
操作系统。标准DIN
f, err := os.Open("a.txt")
if err != nil {
panic(err)
}
defer f.Close()
oldStdin := os.Stdin
defer func() { os.Stdin = oldStdin }()
os.Stdin = f
var s string
if _, err := fmt.Scanf("%s", &s); err != nil {
fmt.Printf("Error reading: %v", err)
}
fmt.Println("Read:", s)
注意,您还可以重定向
os.Stdout
f2, err := os.Create("out.txt")
if err != nil {
panic(err)
}
defer f2.Close()
oldStdout := os.Stdout
defer func() { os.Stdout = oldStdout }()
os.Stdout = f2
fmt.Printf("This will be written to the file: %s", f2.Name())
使用
fmt.Fscanf()
一个更简单、更好的选择是使用
fmt.Fscanf()
这与
io.Reader
阅读,以及
os.File
机具
,因此您可以直接将文件传递给它。
将文件重定向到应用程序的标准输入
go run myapp.go < a.txt
此命令将启动你的应用程序,流式传输
fmt。Scanf()
将阅读
文件