【问题标题】:Java: Retrieve working directory of current process builderJava:检索当前进程构建器的工作目录
【发布时间】:2015-04-30 04:44:39
【问题描述】:

我正在运行一个 java 应用程序 (app1),它使用 ProcessBuilder 和 Fixed Thread Pool 并行运行另一个 java 应用程序 (app2) 的多个实例,代码如下:

futures = new ArrayList<Future<String>>();
executor = Executors.newFixedThreadPool(10);
for (int i=0; i<cnt;i++)
{
ProcessBuilder builder = new ProcessBuilder();   
builder.command("java","app2");  //I set the class path in the real code
builder.directory(new File("/Users/Evan/Documents/workspace/MyProj/ins_"+i));
builder.inheritIO();
ProcessRunner pr=new ProcessRunner (builder);  
futures.add(executor.submit(pr));
}

app2 的每次运行都有不同的工作目录(文件夹 ins_i 中 i 的值每次运行都不同)。该代码有效,但现在在app2中,我想从当前进程的工作目录中读取一个文件(即/Users/Evan/Documents/workspace/MyProj/ins_“+i)。所以在app2代码中我需要一个语句让我知道当前流程构建器的目录(基本上是“/Users/Evan/Documents/workspace/MyProj/ins_”+i 中 i 的值)。
我试过这个说法:

System.getProperty("user.dir")

它没有工作,因为它检索到“/Users/Evan/Documents/workspace/MyProj”

谢谢你,感谢任何帮助

【问题讨论】:

  • 什么是ProcessRunner?它在运行时实际上做了什么?

标签: java process processbuilder working-directory


【解决方案1】:

但是现在在app2中,我想从当前进程的工作目录中读取一个文件

如果您知道要从 app2 的工作目录中读取的文件名,则只需创建一个 File 对象,并传递您要读取的文件的文件名。父文件夹默认为当前工作目录(由ProcessBuilder定义)

File myFile = new File("FileToRead");
//read from myFile using FileInputStream

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    • 2010-10-24
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多