2017-05-13 1 views

Antwort

0

Es kann auch andere Optionen geben, aber in dieser Antwort möchte ich mich auf einen Filestream als Eingabe konzentrieren.

Der Befehl würde wie folgt aussehen:

c:\>MyConsole < c:\temp\streamin.txt 

Das folgende Beispiel ist eine einfache Konsolenanwendung, die Eingabe aus einer Datei, bis ‚q‘ akzeptiert wurde ‚gedrückt‘.

Programm 1

static void Main(string[] args) 
{ 
    var isBusy = true; 
    while (isBusy) 
    { 
     var k = Console.In.Read(); 
     if (k > -1) 
     { 
      var c = Convert.ToChar(k); 
      // quit if 'q' was pressed. 
      if (c == 'q') 
       isBusy = false; 
      Console.WriteLine($"Key pressed: {c}"); 
     } 
     Thread.Sleep(500); 
    } 
    Console.WriteLine(); 
    Console.WriteLine("Done. Closing in 5 seconds."); 
    Thread.Sleep(5000); 
} 

Bitte beachten Sie, dass Console.ReadKey wird nicht verfügbar sein, da die Eingabe von einer Datei kommt.

Wenn Sie die Datei in Notepad öffnen und anhängen Schlüssel und speichern die Datei, werden Sie feststellen, Programm 1 die Schlüssel lesen.

Sie können auch ein anderes Programm erstellen, das Schlüssel an die Datei anfügt.

Programm 2

static void Main(string[] args) 
{ 
    var f = new FileStream(@"c:\temp\streamin.txt", FileMode.Append); 
    var key = new ConsoleKeyInfo(); 
    while (key.KeyChar != 'q') 
    { 
     key = Console.ReadKey(false); 
     f.Write(new[] { Convert.ToByte(key.KeyChar) }, 0, 1); 
     f.Flush(); 
    } 
    f.Close(); 
    f.Dispose(); 
    Console.WriteLine(); 
    Console.WriteLine("Done. Press any key to quit."); 
    Console.ReadKey(true); 
    Console.WriteLine(); 
} 

Diese sind sehr einfache Programme, nur um zu zeigen, was möglich ist. Programm 2 wird Keys an die Datei anhängen, während Programm 1 weiter von der Datei liest, bis 'q' gedrückt wurde.

Sie können auch Console.SetIn() verwenden, um den Eingabestrom in Programm 1 anstatt in der Befehlszeile festzulegen.

Verwandte Themen