1

文字列をパラメーターとして受け取り、テキスト ファイル内の文字列を検索するプログラムがあります。

パラメータとして入力する場合を除いて、すべてが完全に機能*します。ディレクトリ内のすべてのファイル名を出力します。*パラメータとして入力すると、コードを通過しないようです。

何が起こっているか知っている人はいますか?

4

3 に答える 3

6

コマンドラインからファイルのグロブを渡している可能性が最も高いです。このリンクは興味深いかもしれません: http://en.wikipedia.org/wiki/Glob_(programming)#Syntax

基本的に言うと

java ... *

文字は(*シェルによって) 現在のディレクトリ内のファイルのリストに展開されます。これは、Java が*文字を認識する前に発生し、Java は代わりに「file1 file2 ...」を認識します。

*次のように、コマンド ラインで文字を一重引用符で囲むと役立つ場合があります。

'*'

またはそれをエスケープすることによって:

\*
于 2012-12-12T07:50:32.477 に答える
2

シェルは*、プログラムに到達する前に展開しています。このようにエスケープしてみてください

bash$ java MyClass \*
于 2012-12-12T07:50:16.303 に答える
2

- 正規表現*では特別な意味があります。

-\\その前に使用する必要があります。

例えば:

\\*
于 2012-12-12T07:52:12.243 に答える