2009-10-15 97 views

回答

0

檢查這個例子:http://littletutorials.com/2008/03/10/getting-file-system-details-in-java/

在Windows環境下,你可以讀取HOMEDRIVE變量。 如果您運行此代碼,您將看到所有可用的環境變量。

import java.util.Map; 

public class EnvMap { 
    public static void main (String[] args) { 
     Map<String, String> env = System.getenv(); 
     for (String envName : env.keySet()) { 
      System.out.format("%s=%s%n", envName, env.get(envName)); 
     } 
    } 
} 

HOMEDRIVE在Unix環境中不存在作爲概念。

4

嘗試在Windows下:

File file = new File(".").getAbsoluteFile(); 
File root = file.getParentFile(); 
while (root.getParentFile() != null) { 
    root = root.getParentFile(); 
} 
System.out.println("Drive is: "+root.getPath()); 

在Unix系統上,這將是用處不大的根永遠是/

0

按照java.io.File的javadoc:

的通過調用 getParent()此類的方法和可以獲得抽象路徑名的父親 10由路徑名的前綴和 每個名稱中除路徑名 以外的序列組成。每個 目錄的絕對路徑名都是任何File對象的 始祖,其中 絕對抽象路徑名稱 以目錄的絕對路徑名 開頭。例如,由抽象路徑名稱 「/ usr」表示的目錄 是路徑名爲 「/ usr/local/bin」的目錄 的祖先。

前綴的概念用於處理UNIX平臺上 根目錄, 和驅動器符,根目錄 和UNC路徑名在Microsoft Windows 平臺,具體如下:

  • 對於UNIX平臺上,絕對路徑名的前綴總是「/」。 相對路徑名稱沒有前綴。表示根目錄 目錄的 抽象路徑名具有前綴「/」和 空的名稱序列。

  • 對於Microsoft Windows平臺,包含驅動器說明符的路徑名的前綴由驅動器號後跟「:」組成,如果路徑名是絕對路徑,可能後跟「\\」。 UNC路徑名的前綴是「\\\\」;主機名和共享名稱是名稱序列中的前兩個名稱。沒有指定驅動器的相對路徑名沒有前綴。

因此,一個解決方案可能是創建一個相對File對象(使用"."當前目錄),得到了家長和提取驅動器盤符。這當然不是便攜式的。

0

如果你想知道運行系統的當前工作目錄,您使用以下命令:

String currentDirectory = System.getProperty("user.dir"); 

這會告訴你它開始在目錄中,這往往是其中的Jar文件位於,或者類路徑的根目錄。

編輯: System Class javadoc for the method getProperties()具有可用的通用系統屬性集。

相關問題