C#でパイプを使ってデータを入力してみる

パイプってご存じですか。コンソールアプリの出力を別のコンソールアプリに渡す便利な方法です。コンソールアプリに慣れ親しんでいたりすると、自前のアプリにパイプを使ってデータを入力したりしたいことがたまにあります。C#でパイプを使って自前のソフトウェアにデータを流し込んでみました。

目次

  1. 処理の流れ
  2. 実際にやってみた

処理の流れ

ConsoleクラスのInプロパティのMSDNの説明あたりを見ると、1行入力するサンプルがあったりします。でもパイプを使うなら、きっと複数行の文字列を流し込んだりしたいですよね。ということで、サンプルにあるReadLine()ではなくて、ReadToEnd()を使ってみました。 流れとしては、Console.InプロパティでTextReaderオブジェクトを作って、ReadToEnd()で文字列を取り出します。

実際にやってみた

こういうコードにしてみました。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace stdin_trial
{
    class Program
    {
        static void Main(string[] args)
        {
            TextReader stdinText = Console.In; // 標準入力のTextReaderを作ります
            string text = stdinText.ReadToEnd(); // 標準入力からの入力を最後まで読み込みます

            Console.Write(text); // 読み込んだ文字列をコンソールに出力します
        }
    }
}

入力用のファイルを下図にようにしました。(a.txt) 151113-2-00 そして、コマンドプロンプトを開いて、入力用ファイル(a.txt)を自前アプリにパイプで流し込み、出力用ファイル(b.txt)に書き込みます。(typeコマンドなんて久しぶりです。) 151113-2-01 出来上がった出力用ファイル(b.txt)を開いてみると、入力された文字列がそのまま出力されているのがわかります。 151113-2-02 ここで作ったプログラム自体には何も意味がありませんが、パイプで入出力できるとデータのやりとりがちょっと便利になりますからね。

公開日

広告