是否有C:驱动器(或等效的unix)的java系统属性?

时间:2011-04-20 11:48:28

标签: java ant build system

我有一个ant build我正在尝试自定义,以便正在构建的文件部署在我的项目文件夹之外。

Java System属性让我可以访问$ {user.home},但我需要更高一些“Machintosh HD / Applications”。

如何将ant指向高于user.home的目录?

8 个答案:

答案 0 :(得分:6)

你可以使用正斜杠(Unix风格),然后用/开始你的路径:

<property name="root.dir" location="/"/>

它将解析适用于您的操作系统平台的默认驱动器的根目录(例如Windows上的C:\和Unix上的/

<property name="tmp.dir" location="/tmp"/>

将解析为C:\tmp/tmp,具体取决于您的平台。

答案 1 :(得分:2)

您可以使用getParent()

File f = new File(System.getProperty("user.home"));
f.getParent();//this would return the parent of user home which you need.

在您的更新中:

You can use [File.listRoots()][2]

答案 2 :(得分:2)

试试看File.listRoots()。与ANT java task结合可能会得到理想的结果。

答案 3 :(得分:1)

你能不能只使用${user.home}/../

答案 4 :(得分:1)

另一个有趣的类是FileSystemView。它包含有关特殊文件的特定于操作系统的信息,例如桌面项或“我的计算机”节点:

    final javax.swing.filechooser.FileSystemView fileSystemView = javax.swing.filechooser.FileSystemView.getFileSystemView();
    File[] roots=fileSystemView.getRoots();

您可以使用此类检查文件是Drive节点还是软盘节点,并且使用isTraversable可以检查例如空的CD-ROM驱动器,即File.listFiles()失败的现有根。

答案 5 :(得分:0)

如何定义自己的变量? 请参阅here

答案 6 :(得分:0)

使用File.listRoots()

  

列出可用的文件系统根目录。

     

特定的Java平台可能会支持   零或更多层次组织   文件系统。每个文件系统都有一个   所有其他的根目录   该文件系统中的文件可以是   到达。 Windows平台,用于   例如,有一个根目录   每个活动驱动器; UNIX平台有   单个根目录,即“/".

     

可用文件系统根目录的集合   受各种系统级别的影响   插入等操作   弹出可移动媒体和   断开或卸载   物理或虚拟磁盘驱动器。

答案 7 :(得分:0)

这是驱动列表代码:

public static void main(String[] args) {
    for(File drive:File.listRoots())
        System.out.println(drive.getPath());
}