如何使用Outputstream.flush方法



我正在使用REST API。我有以下代码片段:

conn = (HttpURLConnection) url.openConnection();
OutputStream outputstream = conn.getOutputStream(); 
if (payload.getString("phase_id") != null) {
bodyParam = new JSONObject();
bodyParam.put("phase_id", payload.getString("phase_id"));
outputstream.write(bodyParam.toString().getBytes());
}
logger.info(""+outputstream);
outputstream.flush();
if (payload.getString("subphase_id") != null) {
bodyParam = new JSONObject();
bodyParam.put("subphase_id", payload.getString("subphase_id"));
outputstream.write(bodyParam.toString().getBytes());
}
logger.info(""+outputstream);

在这里,即使我刷新输出流,它也会给我输出,比如:

{"phase_id":101}
{"phase_id":101}{"subphase_id":201}

但我想要输出像:

{"phase_id":101}
{"subphase_id":201}

我担心的是,即使我在刷新数据,为什么它会给出以前的数据?是我遗漏了什么吗?

它不会显示重复的数据,只需记录两次即可。

Java OutputStream的flush((方法将写入OutputStream中的所有数据刷新到底层数据目标。例如,如果OutputStream是FileOutputStream,那么写入FileOutputStream的字节可能还没有完全写入磁盘。数据可能会缓冲在操作系统内存中的某个位置,即使Java代码已经将其写入FileOutputStream。通过调用flush((,您可以确保任何缓冲的数据都将被刷新(写入(到磁盘(或网络,或OutputStream的其他目的地(。

链接。我认为你想在再次写作之前清除OutputStream,但flush不是这样做的。

Flush方法不会清除已写入流的数据。你需要关闭它并创建一个新的OutPutStream,然后在其中写入。

相关内容

  • 没有找到相关文章

最新更新