英文:
Equivalent of freopen in Go
问题
在C语言中,可以使用scanf
和printf
通过管道来读写文件,示例如下:
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.Stdin
、os.Stdout
和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)
这段代码的作用是将标准输入、标准输出和标准错误输出重定向到指定的文件。在这个例子中,将标准输入重定向到名为"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)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论