我正嘗試從Unix的Java應用程序的命令行中讀取文件夾名稱。讀取Unix上的Java命令行參數
我有一個的ksh腳本(test.ksh),它有行:
java SomApp $*
我想,如下執行此:
test.ksh ../folder
但失敗;我的意思是我的Java應用程序說「../文件夾」下沒有任何內容,雖然有一些文件。
如何在Unix上讀取這樣的相對路徑?
我正嘗試從Unix的Java應用程序的命令行中讀取文件夾名稱。讀取Unix上的Java命令行參數
我有一個的ksh腳本(test.ksh),它有行:
java SomApp $*
我想,如下執行此:
test.ksh ../folder
但失敗;我的意思是我的Java應用程序說「../文件夾」下沒有任何內容,雖然有一些文件。
如何在Unix上讀取這樣的相對路徑?
這並不完全清楚你想要做什麼。
--snip--
如果你希望你的文件夾作爲參數傳遞給你的指揮下每個文件名,你可以試試
java SomeApp `ls ../folder`
...這將防止執行ls命令.. /文件夾並替換輸出(在../文件夾下的文件列表)。
這是一個簡單的程序,用於在命令行中指定的目錄中列出文件。
public static void main(String... argv) {
File[] list = new File(argv[0]).listFiles();
for (File f : list) {
System.out.println(f.getAbsolutePath());
}
}
關鍵問題是「Java應用程序是否期望目錄名稱或文件名列表?」
如果應用程序需要一個目錄名稱,您似乎給了它一個目錄名稱。除非你的shell腳本執行了一些意想不到的事情,比如更改工作目錄(cd
),否則問題很可能出現在應用程序中。
如果應用程序需要一個文件名列表,那麼您應該傳遞它的文件名而不是目錄名。這可能只是:
./test.ksh ../folder/*
或者你可能需要更多的選擇,如果文件夾還包含子文件夾和應用程序將通過文件夾名稱,而不是文件名被打亂。
你能發表實際的錯誤嗎?另外發布你正在使用的代碼行來讀取文件夾名稱也可能是一個好主意。 – TofuBeer 2010-06-25 16:35:35