C#でパイプを使ってデータを入力してみる
パイプってご存じですか。コンソールアプリの出力を別のコンソールアプリに渡す便利な方法です。コンソールアプリに慣れ親しんでいたりすると、自前のアプリにパイプを使ってデータを入力したりしたいことがたまにあります。C#でパイプを使って自前のソフトウェアにデータを流し込んでみました。
目次
処理の流れ
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)  そして、コマンドプロンプトを開いて、入力用ファイル(a.txt)を自前アプリにパイプで流し込み、出力用ファイル(b.txt)に書き込みます。(typeコマンドなんて久しぶりです。)
そして、コマンドプロンプトを開いて、入力用ファイル(a.txt)を自前アプリにパイプで流し込み、出力用ファイル(b.txt)に書き込みます。(typeコマンドなんて久しぶりです。)
 出来上がった出力用ファイル(b.txt)を開いてみると、入力された文字列がそのまま出力されているのがわかります。
出来上がった出力用ファイル(b.txt)を開いてみると、入力された文字列がそのまま出力されているのがわかります。
 ここで作ったプログラム自体には何も意味がありませんが、パイプで入出力できるとデータのやりとりがちょっと便利になりますからね。
ここで作ったプログラム自体には何も意味がありませんが、パイプで入出力できるとデータのやりとりがちょっと便利になりますからね。
公開日
広告
C#の入出力カテゴリの投稿
- C#でCSVファイルを読み込んでコレクションに入れてみた
- C#でInputBoxを使ってみた
- C#で「名前を付けて保存」ダイアログを使ってみた
- C#でクリップボードから文字列を取得する
- C#でクリップボードにデータを入れる
- C#でコマンドライン引数を取得する
- C#でテキストファイルを読んでみた (File.ReadAllText編)
- C#でドロップされたファイルの名前を得る(WPF編 DragOver版)
- C#でドロップされたファイルの名前を得る(WPF編 PreviewDragOver版)
- C#でドロップされたファイルの名前を得る(Windowフォーム編)
- C#でパイプを使ってデータを入力してみる
- C#でメッセージボックスを使う