我有一个程序将字符串作为参数并在文本文件中搜索字符串。
除非我*
作为参数输入,否则一切正常。它打印出我目录中的所有文件名。*
当我作为参数输入时,似乎它没有通过代码。
有谁知道发生了什么?
我有一个程序将字符串作为参数并在文本文件中搜索字符串。
除非我*
作为参数输入,否则一切正常。它打印出我目录中的所有文件名。*
当我作为参数输入时,似乎它没有通过代码。
有谁知道发生了什么?
您很可能会从命令行传递大量文件。这个链接可能很有趣: http ://en.wikipedia.org/wiki/Glob_(programming)#Syntax
基本上,当你说
java ... *
该*
字符(由您的 shell)扩展为当前目录中的文件列表。这发生在 java 甚至看到*
字符之前,而 java 看到“file1 file2 ...”。
*
在命令行中用单引号将字符括起来可能会有所帮助,如下所示:
'*'
或通过转义它:
\*
你的 shell*
在它进入你的程序之前正在扩展它。尝试像这样逃避它
bash$ java MyClass \*
-在 正则表达式*
中有特殊含义。
-所以你必须\\
在它之前使用。
例如:
\\*