
No.7ベストアンサー
- 回答日時:
ns18さん>私の持っている本には載っていませんでしたし。
。。むぅ、そうですか、ありませんでしたか。
Java2SDKをインストールしたときにドキュメントも一緒にインストールされますが、その中に引数について書かれたドキュメントも含まれています。
SUNのサイトだと以下にあります。
http://java.sun.com/products/jdk/1.2/ja/docs/ja/ …
http://java.sun.com/products/jdk/1.2/ja/docs/ja/ …
↓トップからだと見つけにくいかもしれませんが。
http://java.sun.com/products/jdk/1.2/ja/
↑なお、「1.2」のところはJavaのバージョンなので、「1.3」とか「1.4」とかすれば、それぞれのバージョンのドキュメントが見れます。
Harry_さん>Windowsでやってもちゃんと展開されてしまいました。
大概のOSでは、ワイルドカードを使えば、勝手に展開してくれます。
"*"を使えば任意の文字列になりますし、"?"なら任意の一文字という具合にです。
ただ、ファイルが存在しない場合には展開できないので、単なる"*.java"という文字列として渡ります。
いずれにせよ、引数で渡ってきたファイルが存在するか存在しないかは、自分でチェックして判断しなければなりません。
例えば、ファイルとしては存在していない"nothing.java"という文字列を引数で指定した場合、引数で渡されたファイル名と思われる文字列に該当するファイルが実際に存在するか否かは、Fileクラスを使ってチェックしなければなりません。
その文字列に該当するファイルが存在しないのであれば、その引数は単なる文字列だった、ということになります。
参考まで。
詳しい説明ありがとうございます。
ワイルドカードでファイルやディレクトリがヒットしなかった場合は、
指定した文字列がそのまま渡されるんですね。。
それだとその文字列を使おうとしても確かに存在しないファイルなので
エラーとなりますね。
i_am_aliveさんのおっしゃるようにFileクラスで存在の有無をチェック
する処理をしなくては。。。。
No.8
- 回答日時:
もう一度確認してみました。
前回は、寝ぼけていたようです。ワイルドカードキャラクターは展開されます。
# 誰がやってくれているのだろう? VM なんだろうけど
# 間違いを書いた、という意味で自信無しにチェックをつけてます (^^;
余計なお世話かもしれないけど
i_am_alive> 大概のOSでは、ワイルドカードを使えば、勝手に展開してくれます。
OS が展開するんじゃないですよ。unix の場合は、シェルが展開してくれるの。
試しに、シェルを経由しないでプロセスを起動してごらんなさい(例えば exec系を
使って)。* が展開されないことが分かるでしょう。
MS-DOS は、似非 unix なので、シェルではなくて、コマンドそれぞれが展開して
ました。それでは不便だ、ということで特別なオブジェクト (varargs.obj だったか)
をリンクすると、main() が呼ばれる前にスタートアップルーチンがファイル名
展開をしてくれる仕組みがあったりしました(C 言語の場合)。
# それとも、ns18 さんにあわせた説明をしているだけですか?
# であれば、失礼 m(_ _)m
#いつのまにかこんなにレスしてくれてたんですね。
#返事が遅れて申し訳ありません。
私はWindowsだの、unixだのよくわからないので、今はWindowsで作って
動作確認していますが、unixでも確認しなくてはいけませんね。
なにはともあれ、a-kuma他、皆さん回答ありがとうございました。
No.6
- 回答日時:
Harry_ さんの環境はどうなんでしょうね。
私も、実際に動かしてみて確認したのですが、ダブルクォーテーションでくくらなくても展開されませんでした。
私が確認したのは J2SE 1.4.0 で Windows2000 のコマンドプロンプトです。
# 変なの
No.5
- 回答日時:
> a-kuma さん。
いや、それがですね、
Windowsでやってもちゃんと展開されてしまいました。
マッチするファイルがカレントにひとつもないと、
展開されずに *.java がそのまま渡されたので、勘違いして
下の回答を書いたのですが。
ちなみに、本当に *.java を渡したいときは、"*.java" って
ダブルクォーテーションでくくるとOKでした。
なるほど。""で囲むとスペースや*,?などがあっても、
1つの文字列としてコマンドラインで渡されるのですね!!
参考になりました。ありがとうございます。
No.4
- 回答日時:
多分、ns18 さんは、プロンプトを '>' で書いているので Windows な人だと
思いますので、No.2 の Harry_ さんが書いてあるような結果になります。
unix だと、それを実行しているシェルが *.java を実際のファイル名に展開して
くれるので、引数に実際のファイル名として渡ってきます。
その場合には、File#list(FilenameFilter) を使って、自分で探す必要があります。
No.2
- 回答日時:
「*.java」という文字列自体が args[0] に格納されるだけですが、
それでよかったのですか?
「*.java」にマッチするファイル名のリストを受け取れるわけではないですよ。
No.1
- 回答日時:
可能でしょうかも何も、main(String[] args)とかやれば、argsに引数として渡りますよ。
Java入門書でも最初の方に出てくると思いましたが。
↓例
public class ArgTest
{
public static void main(String[] args)
throws Exception
{
for ( int i = 0 ; i < args.length ; i++ ) {
System.out.println(args[i]);
}
}
}
こんな簡単にできるとは・・・
何しろ初心者なもので、知りませんでした。
私の持っている本には載っていませんでしたし。。。
とにかくありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SVFの設定について:クラスパス...
-
『ClassNotFoundException: org...
-
classファイルについて
-
JAR内のクラス一覧と、メソッド...
-
「削除するか、クラスパスの正...
-
Eclipseでデバッグが出来ないエ...
-
org.apache.tools.zip.* を使っ...
-
eclipse でclassesフォルダーが...
-
Eclipse・プロジェクトで、フォ...
-
JADで*.jarごとデコンパイルす...
-
Eclipseで、クラスを新規作成す...
-
”書きこみできません”とエラー...
-
javaクラスファイルをEclipseで...
-
Jarコマンドでマニフェストファ...
-
jdbcドライバのjarファイルにク...
-
earファイルを展開する方法
-
Win7にて、VS2003作成アプリ実行時
-
java.io.Fileクラスは絶対パス...
-
プログラム実行の際に、「ソー...
-
java クラスファイルとソースコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Eclipse・プロジェクトで、フォ...
-
classファイルについて
-
SVFの設定について:クラスパス...
-
javaクラスファイルをEclipseで...
-
eclipse でclassesフォルダーが...
-
earファイルを展開する方法
-
Eclipse「リフレッシュ」と「ク...
-
jdbcドライバのjarファイルにク...
-
EclipseでHTTP404エラーが出る。
-
『ClassNotFoundException: org...
-
javax.mailがimportできない
-
【Eclipse】パッケージ・エクス...
-
VisualStudioでC++クラスを追加...
-
「main メソッドを持つクラスが...
-
java クラスファイルとソースコ...
-
結局 deleteしないとダメ? フ...
-
FileWriterで8kb以上書き込むに...
-
「削除するか、クラスパスの正...
-
【Eclipse】逆コンパイルでエラ...
-
Eclipseで、クラスを新規作成す...
おすすめ情報