【发布时间】:2011-04-20 11:48:28
【问题描述】:
我正在尝试自定义一个 ant 构建,以便将正在构建的文件部署在我的项目文件夹之外。
Java System 属性让我可以访问 ${user.home},但准确地说,我需要更高的“Machintosh HD/Applications”。
如何将 ant 指向高于 user.home 的目录?
【问题讨论】:
我正在尝试自定义一个 ant 构建,以便将正在构建的文件部署在我的项目文件夹之外。
Java System 属性让我可以访问 ${user.home},但准确地说,我需要更高的“Machintosh HD/Applications”。
如何将 ant 指向高于 user.home 的目录?
【问题讨论】:
您可以只使用正斜杠(Unix 风格),并以/ 开始您的路径:
<property name="root.dir" location="/"/>
它将解析适合您的操作系统平台的默认驱动器的根目录(例如,Windows 上的 C:\ 和 Unix 上的 /)。
<property name="tmp.dir" location="/tmp"/>
将解析为 C:\tmp 或 /tmp,具体取决于您的平台。
【讨论】:
试试看File.listRoots()。与ANT java task 结合可能会得到想要的结果。
【讨论】:
Java System properties give me access to ${user.home} but I need to be higher "Machintosh HD/Applications" to be exact.@John 你需要root或者user.home的直接上面的目录?>
您可以使用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]
【讨论】:
你不能只用${user.home}/../吗?
【讨论】:
另一个有趣的类是 FileSystemView。它包含有关特殊文件的操作系统特定信息,例如桌面项或“我的电脑”节点:
final javax.swing.filechooser.FileSystemView fileSystemView = javax.swing.filechooser.FileSystemView.getFileSystemView();
File[] roots=fileSystemView.getRoots();
您可以使用此类检查文件是驱动器节点还是软盘节点,此外,您还可以使用 isTraversable 检查例如空 CD-ROM 驱动器,即 File.listFiles() 将失败的现有根。
【讨论】:
定义自己的变量怎么样? 见here。
【讨论】:
列出可用的文件系统根目录。
特定的 Java 平台可能支持 零个或多个分层组织 文件系统。每个文件系统都有一个 所有其他的根目录 该文件系统中的文件可以是 到达。 Windows 平台,适用于 例如,有一个根目录 每个主动驱动器; UNIX 平台有 单个根目录,即“/”。
可用文件系统根的集合 受各种系统级的影响 操作,如插入或 可移动媒体的弹出和 断开或卸载 物理或虚拟磁盘驱动器。
【讨论】:
这是驱动器列表代码:
public static void main(String[] args) {
for(File drive:File.listRoots())
System.out.println(drive.getPath());
}
【讨论】: