0

我有以下问题。我在 unix 服务器上有一个名为 password.txt 的 txt 文件。我在同一台服务器上有一个 java 类。我必须使用这个 Java 类读取 password.txt 的内容。但是,Unix 在 root 用户下运行,并且 root 用户没有适当的权限直接读取这个 password.txt 文件。因此,我介绍了一个脚本和另一个为我读取 password.txt 的 java 类。

基本上,我使用 Process 和 Runtime.exec() 从 java 类调用脚本。该脚本调用另一个可以读取 password.txt 文件内容的 java 类。但是如何将内容返回给调用脚本的 java 类呢?有人建议将 password.txt 的内容分配给一个环境变量,并在我的 java 类中读取该环境变量。我该如何准确地实现这一点。另外,这是一个好的解决方案吗?我对 UNIX 和脚本非常陌生。请帮忙

4

2 回答 2

0

我承认我对你的 Java 和脚本层次结构有点困惑(我认为你不能直接通过 读取文件FileReader)。也许您只需要一个 Java 类和一个脚本(适当的许可 - 像这样还是这样?)。

但是如何将内容返回给调用脚本的 java 类呢?

您不能使用环境变量,因为这些变量仅适用于进程及其子进程。如果您在子进程中更改它,您将不会在父进程中看到更改。

我会让您的阅读课将读取的数据写入标准输出(通过简单的System.out.println())。您应该能够从您通过启动的进程中读取输入流Process.exec()来自Process.getInputStream()的文档:

获取子流程的输入流。流从这个 Process 对象表示的进程的标准输出流中获取数据。

有几个问题。从衍生的进程中读取数据。有关更多详细信息,请参阅此答案

于 2012-08-09T08:26:37.023 回答
0

您可以让脚本将内容文件写入其标准输出。该脚本可能只是catsusudo结合以获得适当的权限。然后,您可以通过在用于启动脚本的对象上调用getInputStream()来读取数据。Process

于 2012-08-09T08:28:33.100 回答