BufferReaderクラスを使用していて思った疑問なのですが、
public static void main(String args[]){
}
BufferReaderクラスを使用すれば、コマンドラインに入力された値を取得できるのであれば、
「コマンドライン引数からコマンドライン(プロンプト)から 値を取得してくる意味」がどこにあるのかが、BufferReaderクラスの存在を知ってからわからなくなってきました。
コマンドプロンプトの文字列を取得できる「BufferReaderクラス」があるのにも関わらず、
コマンドライン引数が存在している、何故コマンドライン引数は存在するのでしょうか?
BufferReaderは、バッファーに入力をためて読むだけのクラスで、コマンドライン入力だけを取得するものではないからです。
java hoge -option=huga < example.txt
の様な使い方を考えれば分かると思います。
コマンドライン引数が無かったら、と想像してみてください。
入力の最初が、コマンドライン引数なのか標準入力の1行目なのかプログラムから見分けがつかない
という仕様になる(というか、そうならざるをえない)はずなので面倒ですよね?
ところで、BufferReader は java.io.BufferedReader のスペルミスではなくて、何かそういうライブラリがあるのだと推測します。
しかし BufferReader で検索しても BufferedReader のスペルミスに多数ヒットしてしまうので特定できませんでした。
Tokenizer の様な振る舞いをするものだとは思いますが……。
完全クラス名か、参考になるURLを示してもらえるといいかと思います。
……あるいは、コマンドライン引数に分離する前の形でString型1つで渡してもらえば済むのではないか、という質問だったのでしょうか?
であればなおのこと、BufferReader の出自を正確に知りたいです。
ダミーURL(Java API リファレンスの索引 b。BufferReader は無いです)
http://java.sun.com/javase/ja/6/docs/ja/api/index-files/index-2....
ご回答ありがとうございます。
>java hoge -option=huga < example.txt
コマンドラインが無ければ、
恐らくは「example.txt」の内容を入力値として扱えなくなる。 事態に陥ってしまう。
ということになりますよね・・・
(ただ、ここで更に疑問なのが、それができないことによって、どういう弊害が起こるのか、
というところがまだ想像できない状態です・・・)
>ところで、BufferReader は java.io.BufferedReader のスペルミスではなくて、何かそういうライブラリがあるのだと推測します。
>しかし BufferReader で検索しても BufferedReader のスペルミスに多数ヒットしてしまうので特定できませんでした。
すみません。実はこちらBufferedReader のつもりで書いていたのです。
ちょっと経緯が長くなってしまうので、部分的にお伝えいたします。
質問する前に一応内容を調べようと思い、google検索で、「BufferedReader」と打ったつもりが「BufferReader」と入力していた。
そこで出てきたページのタイトルに「BufferReader」とあった。
>ttp://www.okapiproject.com/java/learn_java/begin04/l0400104.htm
(このページの内容で使われているクラスは「BufferedReader」で正規表示)
それで、質問する前に
「googleで検索に使った文言"bufferReader”」を見ながら質問を書いていたため「BufferReader」となってしまった
という経緯です。
出自ですが(出所ってことですよね?)
結城 浩(著)「p92」
「if文」の連鎖より使用されているBufferedReader よりです。
> 何故コマンドライン引数は存在するのでしょうか?
JavaはCから影響を受けているので、その名残でしょう。
# 例えばmainメソッドから起動する、ビット演算子の優先順位などです
ご回答ありがとうございます。
そういえば、javaとCを比較してみると
確かにどちらもmainメソッドから記載されていますね。
そのビット演算子の優先順位についても
抑えておきたいと思うのですけども、
JavaとCでは「扱われるビット演算子の優先順位は全く同じ構造になっている」のでしょうか?
それとも部分的に優先順位がついているのでしょうか?
http://cai.cs.shinshu-u.ac.jp/sugsi/Lecture/HowToUnix/2-3.html
unix系のosの場合パイプでつなげて処理するというのがとても重要です
コマンドライン引数が無いとパイプでつなげた場合余計なパラメータをパイプに流すことになりとても不便です
ただパイプは基本的にCUIでしか使わないのでJavaのように色々な環境で使われるプログラムの場合使わないことも多いと思います(携帯とか)
ご回答ありがとうございます。
BufferReader(すみません、正確にはBufferedReader)でした。