![]() | LineInput | サンプルソース |
|---|---|---|
コマンドラインから文字列の入力を受け付けます。標準入力からの文字の取得は、バイトストリームを文字ストリームに変換する基本だぞ。 |
LineInput.java |
/**
* 愛のJava256本ノック for Java 5.0
* Javaサンプルソース ver0.2C "LineInput"
* LineInput.java 「コマンドラインから文字を入力」
*
* 2005/09/23 制作:安永ノリカズ
*
* 【コンパイル&実行方法】
* >javac LineInput.java
* >java LineInput
* 【キーワード】
* 標準入力(standard input), 標準出力(standard output),
* 入出力(io:input/output), ストリーム(stream:流れ),
* java.io.InputStreamReader
* 【試してみよう】
* 連続して入力を受け付ける。
* 入力された内容をファイルに書き出す。
*/
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.lang.String;
import java.lang.System;
public class LineInput {
public static void main(String[] A00) {
BufferedReader L00 = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.print("文字列を入力してください:");
String L01 = L00.readLine();
System.out.printf("入力 = %s%n長さ = %d文字%n", L01, L01.length());
} catch(IOException L02) {
System.out.println("入力エラー");
}
}
}
/* ■ クラスの外でちょっと一言 ■
java.ioパッケージには、入出力のためのクラスがたくさんあります。最初は、
どれがどんな機能なのか、うまく整理できないことでしょう。実は、このパッ
ケージを読み解くにはコツがあって、最初に4つの基礎的なクラスを押さえる必
要があります。
Javaでは読み書きするデータの流れをストリームといいます。そのストリームに
は、データを数値として処理する「バイトストリーム」と、文字として処理する
「文字ストリーム」の2種類があります。その入力と出力が基礎的な4つのクラス
で表されていて、バイト入力="InputStream"、バイト出力="OutputStream"、文
字入力="Reader"、文字出力="Writer"となっています。
この4つのクラスが理解できれば、あとは簡単。多くのストリームクラスは、こ
れらを継承していますので、クラス名を見ただけで、大まかな機能が推測できま
す。「DataInputStream」は「データをバイトで読み込む」、「FileWriter」は
「ファイルに文字を書き出す」と解釈すればいいです。
また、ストリームクラスの多くは、コンストラクターで他のクラスを受け取っ
て、連結して使用することが可能です。
今回の例でいえば、System.inで標準入力に指定されているのはInputStream。こ
のままでは、バイトデータしか取得できませんので、「バイトデータ→文字」の
変換を行うInputStreamReaderと、「文字→1行の文字列」の変換を行う
BufferedReaderをつなぎ合わせて、標準入力から1行の文字列を読み込む機能を
実現しています。
「ファイルにバイトを書き出す」とか、「Webサーバーから1行読み込む」とか、
場合によっていろいろな入出力の形式があると思いますが、すべてこれらのクラ
スをつなぎ合わせて対応することになります。
*/