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