Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重定向子进程java的文件I/O_Java - Fatal编程技术网

重定向子进程java的文件I/O

重定向子进程java的文件I/O,java,Java,我正在打开一个新文件,并试图在java的子进程中写入它。我使用process builder启动子流程。文件正在创建中,但我想写入文件的任何内容都无法写入。有办法解决这个问题吗?我可以重定向子进程的stdin、stdout和stderr,但是如何重定向文件I/O。我想在java版本1.7上这样做 进程已启动: ArrayList<String> params = new ArrayList<String>(); for (int i = 0; i < cmdarr

我正在打开一个新文件,并试图在java的子进程中写入它。我使用process builder启动子流程。文件正在创建中,但我想写入文件的任何内容都无法写入。有办法解决这个问题吗?我可以重定向子进程的stdin、stdout和stderr,但是如何重定向文件I/O。我想在java版本1.7上这样做

进程已启动:

ArrayList<String> params = new ArrayList<String>();

for (int i = 0; i < cmdarray.length; i++) {
    params.add(cmdarray[i]);
}

try {
    //java.lang.Process process = Runtime.getRuntime().exec(cmdarray);
    ProcessBuilder builder = new ProcessBuilder(params);

    final java.lang.Process process = builder.start();
    BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));

    String line;

    while((line = br.readLine()) != null) {
        System.out.println(line);
    }
} 
catch (IOException e) {
    e.printStackTrace();
}
您忘记使用
BufferedWriter br
,这就是
字符串
未写入文件的原因

试试这个,可能会有帮助:

BufferedWriter br;
try {
    br = new BufferedWriter(new FileWriter(new File("text.txt")));
    br.write("This should be present in the file.");
    br.close();
} catch (IOException e) {
    e.printStackTrace();
}

您所做的代码在哪里???如果没有代码片段,我认为问题不会很简单。这是我实现map reduce框架的一部分,我在请求启动作业的节点上创建了一个新流程。
BufferedWriter br;
try {
    br = new BufferedWriter(new FileWriter(new File("text.txt")));
    br.write("This should be present in the file.");
    br.close();
} catch (IOException e) {
    e.printStackTrace();
}