我正在尝试从Unix上的Java应用程序的命令行中读取文件夹名称。
我有一个ksh脚本(test.ksh),它有一行:
java SomApp $*
我正在尝试按以下方式执行此操作:
test.ksh ../folder
但这失败了;我的意思是我的Java应用程序说在“../folder”下没有任何内容,尽管有一些文件。
如何在Unix上阅读这样的相对路径?
答案 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/*
或者,如果文件夹中还包含子文件夹,则可能需要更具选择性,并且文件夹名称而不是文件名会扰乱应用程序。