Java - 使用 System.getProperty("user.dir") 获取主目录

31

我在想,使用以下方式是否可行:

System.getProperty("user.dir");

获取文件夹的绝对路径是最佳实践吗?我想将我的应用程序传递到其他计算机上,并且需要一种可靠的方法来获取“主目录”,以便在需要使用其他文件夹时,只需添加到路径即可:

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

根文件夹是“/”。你在尝试做什么? - Elliott Frisch
"user.dir" 是当前工作目录,而不是主目录。 - Evan Sebastian
1
你似乎在混淆概念。user.dir是当前目录。要获取“File”对象的“绝对路径”,请使用getAbsolutePath() - Jim Garrison
1
一旦您的标题被修改以表达您真正想问的问题,这个问题就变得毫无意义。System.getProperty("user.dir")根本不是获取主目录的方法,它是获取当前工作目录的方法。因为造成了困惑,所以评分为-1。 - user207421
抱歉,我想表达的不是那个意思。只是指工作目录。用词不当 :S - jn025
问题标题和实际内容无关。请参见https://dev59.com/RXRB5IYBdhLWcg3wkH9N,以获取user.home。 - Jayan
3个回答

57

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

String currentUsersHomeDir = System.getProperty("user.home");
并且添加路径分隔符。
String otherFolder = currentUsersHomeDir + File.separator + "other";

File.separator

表示系统默认的与操作系统相关的文件名分隔符,为方便起见表示为字符串。此字符串包含一个字符,即separatorChar。


2
这是“傻瓜式”的,而不是“完全的证明”;我没有投反对票。 - Jim Garrison
请参见 https://dev59.com/RXRB5IYBdhLWcg3wkH9N 中提到的“JDK-4787931:System property“ user.home”不对应于“USERPROFILE”(win)”。 - Jayan
问题已经解决了 @Jay - jmj

8

1
使用File.separator以获得最佳的跨平台支持,或者使用'/'。即使在Windows上,'/'也可以在Java中正常工作。 - javajon
谢谢你的提示。我从不知道在Windows中'/'也能用。 - Evan Sebastian

7

获取当前工作目录的程序=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);
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接