javaのコマンドライン引数について教えてください。

BufferReaderクラスを使用していて思った疑問なのですが、

public static void main(String args[]){
}

BufferReaderクラスを使用すれば、コマンドラインに入力された値を取得できるのであれば、
「コマンドライン引数からコマンドライン(プロンプト)から 値を取得してくる意味」がどこにあるのかが、BufferReaderクラスの存在を知ってからわからなくなってきました。

コマンドプロンプトの文字列を取得できる「BufferReaderクラス」があるのにも関わらず、
コマンドライン引数が存在している、何故コマンドライン引数は存在するのでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/12/04 00:45:39
  • 終了:2008/12/11 00:50:02

回答(4件)

id:hijk05 No.1

hijk05回答回数1307ベストアンサー獲得回数232008/12/04 01:51:07

ポイント23pt

BufferReaderは、バッファーに入力をためて読むだけのクラスで、コマンドライン入力だけを取得するものではないからです。

http://msugai.fc2web.com/java/IO/BufferedReader.html

id:ThinkThink

ご回答ありがとうございます。

BufferReader(すみません、正確にはBufferedReader)でした。

2008/12/04 20:40:57
id:quintia No.2

quintia回答回数559ベストアンサー獲得回数682008/12/04 09:48:29

ポイント23pt

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....

id:ThinkThink

ご回答ありがとうございます。


>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 よりです。

2008/12/04 20:40:47
id:dev_zer0 No.3

dev_zer0回答回数332ベストアンサー獲得回数252008/12/04 09:49:34

ポイント22pt

> 何故コマンドライン引数は存在するのでしょうか?

JavaはCから影響を受けているので、その名残でしょう。

# 例えばmainメソッドから起動する、ビット演算子の優先順位などです

http://e-words.jp/w/Java.html

id:ThinkThink

ご回答ありがとうございます。


そういえば、javaとCを比較してみると

確かにどちらもmainメソッドから記載されていますね。


そのビット演算子の優先順位についても

抑えておきたいと思うのですけども、

JavaとCでは「扱われるビット演算子の優先順位は全く同じ構造になっている」のでしょうか?

それとも部分的に優先順位がついているのでしょうか?

2008/12/04 20:45:15
id:paraizo No.4

paraizo回答回数139ベストアンサー獲得回数102008/12/06 05:05:47

ポイント22pt

http://cai.cs.shinshu-u.ac.jp/sugsi/Lecture/HowToUnix/2-3.html

unix系のosの場合パイプでつなげて処理するというのがとても重要です

コマンドライン引数が無いとパイプでつなげた場合余計なパラメータをパイプに流すことになりとても不便です

ただパイプは基本的にCUIでしか使わないのでJavaのように色々な環境で使われるプログラムの場合使わないことも多いと思います(携帯とか)

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません