DotnetStandardStreams/source/DotnetStandardStreamsApp/Program.cs

93 lines
1.8 KiB
C#

using DotnetStandardStreams;
using Console = System.Console;
namespace DotnetStandardStreamsApp;
/// <summary>
/// Typical command line for testing in PowerShell:
/// @(1,2,3,4,5,6,7,8,9,10) | .\DotnetStandardStreamsApp.exe .\input.txt
/// </summary>
public static class Program
{
public static void Main(string[] args)
{
ITextSource textSource;
IOutputTarget textTarget = new ConsoleOutputTarget();
if (args.Length > 0)
textSource = new FileTextSource(args[0]);
else
textSource = new StdInTextSource();
Console.WriteLine("---- ExecuteAll");
ExecuteAll(
textSource,
textTarget);
//Console.WriteLine("---- ExecuteAction");
//ExecuteAction(
// textSource,
// textTarget);
//Console.WriteLine("---- ExecuteWhileNotEof");
//ExecuteWhileNotEof(
// textSource,
// textTarget);
//Console.WriteLine("---- ExecuteForNotEof");
//ExecuteForNotEof(
// textSource,
// textTarget);
}
private static void ExecuteWhileNotEof(ITextSource source, IOutputTarget target)
{
source.Open();
target.Open();
while (!source.Eof())
{
string thisLine = source.Read();
target.Output(thisLine);
}
target.Close();
source.Close();
}
private static void ExecuteForNotEof(ITextSource source, IOutputTarget target)
{
source.Open();
target.Open();
for (string line = source.Read(); !source.Eof(); line = source.Read())
target.Output(line);
target.Close();
source.Close();
}
private static void ExecuteAction(ITextSource source, IOutputTarget target)
{
source.Open();
target.Open();
source.ReadAll(target.Output);
target.Close();
source.Close();
}
private static void ExecuteAll(ITextSource source, IOutputTarget target)
{
source.Open();
target.Open();
foreach (string line in source.ReadAll())
target.Output(line);
target.Close();
source.Close();
}
}