Java System.getProperty(“ user.home”)如何为其他用户(pi)返回首页?

时间:2019-07-20 13:06:53

标签: java linux raspbian home-directory

我正在将Java程序作为RPI上的.jar文件执行,在该程序中,接收用户“ pi”的正确原始路径至关重要。

System.getProperty("user.home")

返回我/ root,这是个错误的目录,并且从该目录起使我的文件结构混乱。我正在创建其他文件夹等。 我以pi用户身份启动程序。

如何在不被黑客入侵的情况下为某个用户(在我的情况下为pi /“ home / pi /”)接收正确的homefolder?

PS:该用户可以作为课程的论点输入。

Raspbian stretch
openjdk 11.0.3 2019-04-16
OpenJDK Runtime Environment (build 11.0.3+1-Raspbian-1)
OpenJDK Server VM (build 11.0.3+1-Raspbian-1, mixed mode)

1 个答案:

答案 0 :(得分:2)

没有一种干净的(便携式)方法来查找有关Java中另一个用户的信息。

如果可以使用特定于操作系统的解决方案(对于基于Linux的系统),则可以使用Process和朋友来运行getent passwd外部命令,然后阅读并解析其输出。

getent passwd输出每个匹配的用户包含一行。每行包含许多用冒号分隔的字段,因此您可以使用String::split来解析这些行。在我的系统上,用户的主目录是条目中的第六个字段。

有关更多信息,请阅读man getent以及ProcessProcessBuilder的javadocs。