NullStream
, который определяется как «Поток без резервного хранилища». Все методы ничего не делают или ничего не возвращают. Это внутренний класс для Stream
. Следующий код взят из исходного кода Microsoft.
Обычно, когда один из методов записи Console
вызывается в первый раз, вызывается функция Windows 100 * API для "стандартного вывода" Если дескриптор не возвращается, создается и используется NullStream
.
Ответ Самуила верен и дает общую информацию. Чтобы фактически перенаправить вывод консоли, независимо от типа проекта, используйте Console.SetOut(New System.IO.StreamWriter("C:\ConsoleOutput.txt"))
, который является простым примером.
Направление консоли, отладки и трассировки в файл
Чтобы ответить на ваш вопрос напрямую. Используйте ConsoleTraceListener
и StreamWriter
, чтобы направить все три вывода в файл. Я использую следующее только для разработки.
Dim oLogFile As New System.IO.StreamWriter("C:\ConsoleOutput.txt")
oLogFile.AutoFlush = True 'so we do not have to worry about flushing before application exit
Console.SetOut(oLogFile)
'note, writing to debug and trace causes output on console, so you will get double output in log file
Dim oListener As New ConsoleTraceListener
Debug.Listeners.Add(oListener)
Trace.Listeners.Add(oListener)
NullStream
[Serializable]
private sealed class NullStream : Stream {
internal NullStream() { }
public override bool CanRead {
get { return true; }
}
public override bool CanWrite {
get { return true; }
}
public override bool CanSeek {
get { return true; }
}
public override long Length {
get { return 0; }
}
public override long Position {
get { return 0; }
set { }
}
// No need to override Close
public override void Flush() {
}
public override int Read([In, Out] byte[] buffer, int offset, int count) {
return 0;
}
public override int ReadByte() {
return -1;
}
public override void Write(byte[] buffer, int offset, int count) {
}
public override void WriteByte(byte value) {
}
public override long Seek(long offset, SeekOrigin origin) {
return 0;
}
public override void SetLength(long length) {
}
}