在Unix上读取Java命令行参数

时间:2010-06-25 16:32:17

标签: java

我正在尝试从Unix上的Java应用程序的命令行中读取文件夹名称。

我有一个ksh脚本(test.ksh),它有一行:

java SomApp $*

我正在尝试按以下方式执行此操作:

test.ksh ../folder

但这失败了;我的意思是我的Java应用程序说在“../folder”下没有任何内容,尽管有一些文件。

如何在Unix上阅读这样的相对路径?

3 个答案:

答案 0 :(得分:1)

目前还不完全清楚你要做什么。

- 剪断 -

如果您希望文件夹下的每个文件名作为命令的参数,请尝试类似

的内容
java SomeApp `ls ../folder`

...将对./folder执行ls命令并替换输出(../文件夹下的文件列表)。

答案 1 :(得分:0)

这是一个简单的程序,用于列出命令行中指定的目录中的文件。

public static void main(String... argv) {
  File[] list = new File(argv[0]).listFiles();
  for (File f : list) {
    System.out.println(f.getAbsolutePath());
  }
}

答案 2 :(得分:0)

关键问题是“Java应用程序是否需要目录名称或文件名列表?”

如果应用程序需要目录名,您似乎已经为其指定了目录名。除非您的shell脚本执行某些意外操作,例如更改工作目录(cd),否则问题很可能出现在应用程序中。

如果应用程序需要文件名列表,则应传递文件名而不是目录名。那可能只是:

./test.ksh ../folder/*

或者,如果文件夹中还包含子文件夹,则可能需要更具选择性,并且文件夹名称而不是文件名会扰乱应用程序。