Equivalent of freopen in Go

huangapple go评论75阅读模式
英文:

Equivalent of freopen in Go

问题

在C语言中,可以使用scanfprintf通过管道来读写文件,示例如下:

freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);

在Java中,可以使用System.setIn和相关方法来实现相同的功能。

这种方法非常方便,特别是在需要经常在文件和标准输入/输出之间切换时,同时可以保持代码中不涉及文件指针的清晰。

那么Go语言有类似的功能吗?

英文:

In C I can read and write files using scanf and printf by piping them as follows:

freopen ("input.txt", "r", stdin);
freopen ("output.txt", "w", stdout);

In Java you can do the same with

System.setIn

And friends.

This it very convenient if you need to swap between using a file and stdin/stdout often, and if to keep your code free from file pointers.

Does Go have something similar?

答案1

得分: 7

你可以将os.Stdinos.Stdoutos.Stderr分配给其他值。

import "os"

os.Stdin, err = os.OpenFile("input.txt",
    os.RDONLY | os.O_CREATE, 0666)
os.Stdout, err = os.OpenFile("output.txt",
    os.O_WRONLY | os.O_CREATE | os.O_TRUNC, 0666)

这段代码的作用是将标准输入、标准输出和标准错误输出重定向到指定的文件。在这个例子中,将标准输入重定向到名为"input.txt"的文件,将标准输出重定向到名为"output.txt"的文件。

英文:

You can assign to os.Stdin, os.Stdout, and os.Stderr.

import "os"

os.Stdin, err = os.OpenFile("input.txt",
    os.RDONLY | os.O_CREATE, 0666)
os.Stdout, err = os.OpenFile("output.txt",
    os.O_WRONLY | os.O_CREATE | os.O_TRUNC, 0666)

huangapple
  • 本文由 发表于 2014年6月30日 21:32:34
  • 转载请务必保留本文链接:https://go.coder-hub.com/24491325.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定