【问题标题】:retrieve part of Linux directory path检索部分 Linux 目录路径
【发布时间】:2013-09-07 05:10:35
【问题描述】:

我在 JAVA 代码中获取 Linux 环境变量的值如下:

String path = getEnv("MY_HOME")

//MY_HOME corresponds to mydir/myproject/proj/landing_page/home

我想写一个使用MY_HOME环境变量返回绝对目录路径-mydir/myproject/logs的方法。

谁能建议我如何在 MY_HOME 中检索 'mydir/myproject/' 部分路径?

【问题讨论】:

  • 您为什么不直接拆分path 值并使用您需要的子路径重建它?
  • 问“我有一个字符串mydir/myproject/proj/landing_page/home,我想得到mydir/myproject”这样的问题是行不通的。这对我们没有帮助,因为除了 mydir/myproject/proj/landing_page/home 之外,我们不知道您想要 other 字符串做什么。你到底想要什么?路径的前两个组件?直到第一个“t”?或者是其他东西?第一步是弄清楚你需要什么以及如何准确地陈述它。
  • 我不能这样做,因为不同用户的 mydir 路径会有所不同。所以,我需要一些类似的东西 - 检索 MY_HOME,向上 3 级(获取 mydir/myproject),然后将新目录附加到路径。

标签: java linux path environment-variables


【解决方案1】:

你可以直接使用System.getEnv(String)方法。

如果你想通过升级 3 级来获得 MY_HOME 的部分内容,那么你可以这样做:

String logPath = myHome + "/../../../logs";

或获取路径的前 2 部分:

String arr[] = myHome.split("/");
String logPath="";
if (arr.length > 2)
    logPath = arr[0] + '/' + arr[1] + "/logs";
System.out.println(logPath); // mydir/myproject/logs

【讨论】:

  • 我正在使用 getEnv 方法来检索 MY_HOME。但我需要使用检索到的 MY_HOME 的选定部分来设置另一个环境变量
  • 感谢 anubhava 提供的方法。
【解决方案2】:

java IO中的Path类有subpath方法 因此您可以执行以下操作:

Path path = Paths.get("one/two/three");
System.out.println(path.subpath(0, 2));

输出将是“一/二”;

【讨论】:

    【解决方案3】:

    也许你正在寻找FilegetParentFile方法:

    new File(getEnv("MY_HOME")).getParentFile().getAbsolutePath()
    

    【讨论】:

      猜你喜欢
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-02
      • 2017-08-25
      • 1970-01-01
      相关资源
      最近更新 更多