2017-01-18 16 views
3

我有一個使用java編寫的應用程序,使用斜槓來指定文件和目錄路徑。文件和目錄可以在應用程序在Linux上運行時訪問。但是,當它在Windows上運行時,它說錯誤,指定的路徑不正確。如何唯一指定文件的路徑。如何使用斜槓分隔符指定在windows和linux中唯一地訪問文件的路徑

在java中IAM的使用以下命令:

public static final String WD ="/qark-master/qark/qarkMain.py"; 
public static final String MANIFESTPATH="/apktool/AndroidManifest.xml"; 

請幫我在這裏!

回答

0

這工作正常,當我使用file.separator。

public static final String QWD = File.separator +"qark-master" + File.separator +"qark" + File.separator +"qarkMain.py"; 
public static final String MANIFESTPATH=File.separator +"apktool"+ File.separator +"AndroidManifest.xml"; 
0

您需要爲轉義序列轉義字符。更多細節在這裏 - Escape Characters

在Windows中,您需要爲帶有反斜槓的文件分隔符定義轉義字符 - 如下所示。

String filePath = "C:\\Users\\b21677\\DFS.docx"; 

在Linux中,您應定義爲是

 public static final String WD ="/qark-master/qark/qarkMain.py"; 
0

雖然Java將愉快地使用着在Windows和Linux,一個驅動器字母前綴的要求都斜槓在Windows中,無法在兩個系統中使用相同的絕對路徑。

您需要做的是使用屬性文件來配置操作系統相關參數(如文件位置),並在每個系統上具有不同版本的屬性文件。

請注意,在Java代碼中硬編碼外部資源引用(即文件路徑)是非常糟糕的做法。相對引用是可以的,但它們必須相對於在運行時提供的一些基本位置,而不是編譯到可執行文件中。

3

正如Jim Garrison所提到的,正斜槓在Windows和Unix中都有效。 問題出在驅動器號或根目錄下。在從根目錄定義的Windows路徑中,如/qark-master,它是當前驅動器的根目錄。 但是...在代碼中使用絕對路徑,在Windows中使用驅動器號或從Linux中的根目錄不是一個好主意。更好的方法是使用當前運行目錄或特殊環境變量的相對路徑。 然後你可以使用正斜槓而不關心路徑分隔符。

從另一方面來說 - JVM中有一個名爲「file.separator」的系統屬性,可以根據OS構建一個路徑。無論如何,Windows驅動器盤符的絕對路徑問題當然存在。

+0

是的,這是正確的,我正在追加/qark-master/qark/qarkMain.py與寡婦當前的工作目錄。工作目錄將反斜槓。qarkMain.py文件存在於應用程序目錄中,而不是來自系統。所以爲了訪問qarkMain.py如何獨立地說路徑 – Maria

+0

Yea.it在我用於「文件」時工作正常。分離器「。謝謝你 – Maria

+0

不客氣。 – Vadim

相關問題