2015-06-02 53 views
3

我正試圖從一個Java進程中檢查一個文件是否存在於Unix中。如何在Unix上檢查文件是否存在並可執行於Java?

我正在努力與Runtime.getRuntime().exec() 我試圖運行的命令是test -x $VAR/path/to/file,請注意路徑中的Unix變量。

該命令返回0或1,但我不知道如何從Java內部獲取該指示。

什麼我目前做的是:

String cmd = "test -x $VAR/filename"; 
Process proc = Runtime.getRuntime().exec(cmd); 
int exitCode = proc.waitFor(); 

我還可以添加;echo $?的命令,該命令將打印0/1值,但我不知道怎麼弄的輸出命令。

+3

的'File.exists()'和'System.getenv()A組合'應達到目的,而不需要的外部過程。你的獎金是這個解決方案也是平臺無關的。 – biziclop

+0

進程類也有兩種獲取輸出的方法:[Process.getOutputStream()](http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html#getOutputStream%28%29 )和[Process.getErrorStream()](http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html#getErrorStream%28%29) – olexd

回答

2

可以使用java.io.File類 它的方法canExecute()exists()

實施例:

//Create new File 
File file = new File("C:/test/testFile.exe"); 
//Check if file exists 
if(file.exists()==true){ 
System.out.println("The File Exists"); 
//Check if file is executable 
if(file.canExecute()==true){ 
System.out.println("The File is executable"); 

} 

} 
+0

和env。變量,我們可以使用'System.getenv(VAR)' – buddy123

+1

請不要使用'== true'。只需使用方法的返回值即可。 –

3

我認爲你正在尋找File#exists()File#canExecute()檢查它的存在,並檢查它是否可執行

+3

而'System.getenv() '閱讀env變量。 – biziclop

+2

實際上'canExecute()'應該足夠根據javadoc,因爲它也檢查存在。 – Marvin

+0

@Marvin - 恩,不完全,如果該文件存在但不是*可執行文件*? – TheLostMind

相關問題