我有一个程序,可以将各种结果输出到命令行控制台.
如何使用StreamReader
其他技术将输出保存到文本文件?
System.Collections.Generic.IEnumerable<String> lines = File.ReadAllLines(@"C:\Test\ntfs8.txt");
foreach (String r in lines.Skip(1))
{
String[] token = r.Split(',');
String[] datetime = token[0].Split(' ');
String timeText = datetime[4];
String actions = token[2];
Console.WriteLine("The time for this array is: " + timeText);
Console.WriteLine(token[7]);
Console.WriteLine(actions);
MacActions(actions);
x = 1;
Console.WriteLine("================================================");
}
if (x == 2)
{
Console.WriteLine("The selected time does not exist within the log files!");
}
System.IO.StreamReader reader = ;
string sRes = reader.ReadToEnd();
StreamWriter SW;
SW = File.CreateText("C:\\temp\\test.bodyfile");
SW.WriteLine(sRes);
SW.Close();
Console.WriteLine("File Created");
reader.Close();
Run Code Online (Sandbox Code Playgroud)
Adr*_*der 131
从本文中尝试此示例 - 演示将控制台输出重定向到文件
using System;
using System.IO;
static public void Main ()
{
FileStream ostrm;
StreamWriter writer;
TextWriter oldOut = Console.Out;
try
{
ostrm = new FileStream ("./Redirect.txt", FileMode.OpenOrCreate, FileAccess.Write);
writer = new StreamWriter (ostrm);
}
catch (Exception e)
{
Console.WriteLine ("Cannot open Redirect.txt for writing");
Console.WriteLine (e.Message);
return;
}
Console.SetOut (writer);
Console.WriteLine ("This is a line of text");
Console.WriteLine ("Everything written to Console.Write() or");
Console.WriteLine ("Console.WriteLine() will be written to a file");
Console.SetOut (oldOut);
writer.Close();
ostrm.Close();
Console.WriteLine ("Done");
}
Run Code Online (Sandbox Code Playgroud)
Jan*_*gge 52
尝试这是否有效:
FileStream filestream = new FileStream("out.txt", FileMode.Create);
var streamwriter = new StreamWriter(filestream);
streamwriter.AutoFlush = true;
Console.SetOut(streamwriter);
Console.SetError(streamwriter);
Run Code Online (Sandbox Code Playgroud)
小智 20
对于这个问题:
如何将Console.Writeline输出保存到文本文件?
我会Console.SetOut
像其他人提到的那样使用.
但是,它看起来更像是在跟踪您的程序流程.我会考虑使用Debug
或Trace
跟踪程序状态.
它的工作原理类似于控制台,除了您可以更好地控制输入,例如WriteLineIf
.
Debug
只有在调试模式下Trace
才会运行,因为它将在调试或释放模式下运行.
它们都允许输出文件或控制台等监听器.
TextWriterTraceListener tr1 = new TextWriterTraceListener(System.Console.Out);
Debug.Listeners.Add(tr1);
TextWriterTraceListener tr2 = new TextWriterTraceListener(System.IO.File.CreateText("Output.txt"));
Debug.Listeners.Add(tr2);
Run Code Online (Sandbox Code Playgroud)
- http://support.microsoft.com/kb/815788
L-F*_*our 12
你想为此编写代码还是只使用命令行功能'命令重定向',如下所示:
app.exe >> output.txt
如下所示:http://discomoose.org/2006/05/01/output-redirection-to-a-file-from-the-windows-command-line/(存档于archive.org)
编辑:链接死了,这是另一个例子:http://pcsupport.about.com/od/commandlinereference/a/redirect-command-output-to-file.htm
基于 WhoIsNinja 的回答:
此代码将输出到控制台和日志字符串中,该字符串可以通过向其附加行或覆盖它来保存到文件中。
日志文件的默认名称为“Log.txt”,并保存在应用程序路径下。
public static class Logger
{
public static StringBuilder LogString = new StringBuilder();
public static void WriteLine(string str)
{
Console.WriteLine(str);
LogString.Append(str).Append(Environment.NewLine);
}
public static void Write(string str)
{
Console.Write(str);
LogString.Append(str);
}
public static void SaveLog(bool Append = false, string Path = "./Log.txt")
{
if (LogString != null && LogString.Length > 0)
{
if (Append)
{
using (StreamWriter file = System.IO.File.AppendText(Path))
{
file.Write(LogString.ToString());
file.Close();
file.Dispose();
}
}
else
{
using (System.IO.StreamWriter file = new System.IO.StreamWriter(Path))
{
file.Write(LogString.ToString());
file.Close();
file.Dispose();
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样使用它:
Logger.WriteLine("==========================================================");
Logger.Write("Loading 'AttendPunch'".PadRight(35, '.'));
Logger.WriteLine("OK.");
Logger.SaveLog(true); //<- default 'false', 'true' Append the log to an existing file.
Run Code Online (Sandbox Code Playgroud)
创建一个类 Logger(代码如下),用 Logger.Out 替换 Console.WriteLine。最后将字符串 Log 写入文件
public static class Logger
{
public static StringBuilder LogString = new StringBuilder();
public static void Out(string str)
{
Console.WriteLine(str);
LogString.Append(str).Append(Environment.NewLine);
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
172539 次 |
最近记录: |