2009-10-15 42 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()具有可用的通用系统属性集。

相关问题