输出到文本文件问题
本文关键字:问题 文件 文本 输出 | 更新日期: 2023-09-27 18:07:21
我在写入文本文件时遇到问题。
Console.Write(position[i] + " ");
for循环下面的编译没有问题,但是Console.SetOut(sw);表示名称I在当前上下文中不存在。谁能帮助我得到的应用程序输出出现在一个文本文件?
static void solve(int k)
{
if (k == N)
{
Console.Write("Solution: ");
for (int i = 0; i < N; i++)
Console.Write(position[i] + " ");
Console.WriteLine("Hello World");
FileStream fs = new FileStream("Test.txt", FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
Console.SetOut(sw);
Console.WriteLine(position[i] + " ");
sw.Close();
sum += 1;
}
else
{
for (int i = 0; i < N; i++) // Generate ALL combinations
{
if (isSafe(k, i))
{
position[k] = i;
solve(k + 1);
}
在for
循环范围内定义的i
变量。退出时,此范围变量不可用。
使用block在同一作用域中执行多个操作符:
for (int i = 0; i < N; i++)
{
Console.Write(position[i] + " ");
Console.WriteLine("Hello World");
FileStream fs = new FileStream("Test.txt", FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
Console.SetOut(sw);
Console.WriteLine(position[i] + " ");
sw.Close();
sum += 1;
}
顺便说一句,如果没有block,你的代码相当于
for (int i = 0; i < N; i++)
{
// i is available only withing this block
Console.Write(position[i] + " ");
}
// here i is not available
我还建议使用using
语句与一次性对象,如流。您可以在这里使用相同的流,因此在for
循环之前在更宽的范围内定义它。例如
using(FileStream stream = new FileStream("Test.txt", FileMode.Create))
using(StreamWriter writer = new StreamWriter(stream))
{
TextWriter standardOutput = Console.Out;
for (int i = 0; i < N; i++)
{
Console.SetOut(standardOutput);
Console.WriteLine(position[i] + " ");
Console.SetOut(writer);
Console.WriteLine(position[i] + " ");
}
sum++; // instead of sum += 1
} // stream will be closed automatically
如果您想将控制台输出镜像到文件,那么我建议您使用tracelistener或一些日志记录框架。例如
Trace.Listeners.Clear();
Trace.Listeners.Add(new ConsoleTraceListener());
Trace.Listeners.Add(new TextWriterTraceListener("Test.txt"));
Trace.AutoFlush = true;
for (int i = 0; i < N; i++)
Trace.WriteLine(position[i] + " ");