【问题标题】:Java - using System.getProperty("user.dir") to get the home directory [duplicate]Java - 使用 System.getProperty("user.dir") 获取主目录 [重复]
【发布时间】:2014-09-02 18:57:10
【问题描述】:

我想知道是否使用:

System.getProperty("user.dir");

获取文件夹的绝对路径是最好的方法吗?我希望将我的应用程序传递到其他计算机上,我需要一个完整的证明方法来获取“主”目录,这样当我需要使用其他文件夹时,我就可以添加到路径中:

String path = System.getProperty("user.dir");
String otherFolder = path + "\\other";

【问题讨论】:

  • 根文件夹是“/”。你想做什么?
  • "user.dir" 是当前工作目录,不是主目录
  • 您似乎在这里混淆了概念。 user.dir 是当前目录。 File对象的“绝对路径”由getAbsolutePath()获取。
  • 一旦你的标题被确定为表达你真正想要的,这个问题就变得荒谬了。 System.getProperty("user.dir") 根本不是获取主目录的方法,而是获取当前工作目录的方法。 -1 导致自己混乱。
  • 对不起,我猜不是我的意思。只是意味着工作目录。选词错误:S

标签: java


【解决方案1】:

获取当前用户主目录的方法是

String currentUsersHomeDir = System.getProperty("user.home");

并附加路径分隔符

String otherFolder = currentUsersHomeDir + File.separator + "other";

File.separator

系统相关的默认名称分隔符,为方便起见表示为字符串。该字符串包含单个字符,即 separatorChar。

【讨论】:

  • 这是“万无一失”,而不是“完全证明”;不,我没有投反对票。
  • 参见“JDK-4787931:系统属性“user.home”与stackoverflow.com/questions/585534/…中提到的“USERPROFILE”(win)不对应
  • 已经解决了@Jay
【解决方案2】:

"user.dir" 是当前工作目录,不是主目录 都在这里描述了。

http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html

另外,如果使用\\ 而不是 File.separator,您将失去使用 / 作为文件分隔符的 *nix 系统的可移植性。

【讨论】:

  • 使用 File.separator 以获得最佳跨平台或“/”。即使在 Windows 上,“/”也可以在 Java 中使用。
  • 感谢您的提示。我从来不知道 '/' 也适用于 Windows。
【解决方案3】:

获取当前工作目录的程序=user.dir

public class CurrentDirectoryExample {

    public static void main(String args[]) {

        String current = System.getProperty("user.dir");
        System.out.println("Current working directory in Java : " + current);
    }
}

【讨论】:

    猜你喜欢
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    • 2017-08-02
    • 2013-05-08
    相关资源
    最近更新 更多