stdin
暴露给你作为一个TextReader
通过Console.In
。只需TextReader
为您的输入声明一个变量,该变量可以使用Console.In
或您选择的文件,并将其用于所有输入操作。
static TextReader input = Console.In;
static void Main(string[] args)
{
if (args.Any())
{
var path = args[0];
if (File.Exists(path))
{
input = File.OpenText(path);
}
}
// use `input` for all input operations
for (string line; (line = input.ReadLine()) != null; )
{
Console.WriteLine(line);
}
}
否则,如果重构以使用这个新变量过于昂贵,您始终可以Console.In
使用Console.SetIn()
.
static void Main(string[] args)
{
if (args.Any())
{
var path = args[0];
if (File.Exists(path))
{
Console.SetIn(File.OpenText(path));
}
}
// Just use the console like normal
for (string line; (line = Console.ReadLine()) != null; )
{
Console.WriteLine(line);
}
}