【问题标题】:Is there a java system property for the C: drive (or unix equivalent)?C: 驱动器(或 unix 等价物)是否有 java 系统属性?
【发布时间】:2011-04-20 11:48:28
【问题描述】:

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

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

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

【问题讨论】:

    标签: java ant build system


    【解决方案1】:

    您可以只使用正斜杠(Unix 风格),并以/ 开始您的路径:

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

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

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

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

    【讨论】:

      【解决方案2】:

      试试看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的直接上面的目录?>
      【解决方案3】:

      您可以使用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]
      

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

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

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

          【讨论】:

            【解决方案6】:

            定义自己的变量怎么样? 见here

            【讨论】:

              【解决方案7】:

              使用File.listRoots()

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

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

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

              【讨论】:

              • 我认为他正试图从 ANT 中引用它......所以值得一提的是 ANT java 任务。
              • 你做了,所以 +1 给你 :-)
              【解决方案8】:

              这是驱动器列表代码:

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

              【讨论】:

                猜你喜欢
                • 2017-07-02
                • 2012-04-29
                • 2020-09-20
                • 2015-11-03
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2013-06-21
                • 2012-12-17
                相关资源
                最近更新 更多