我正在从套接字读取字节,然后使用jsonGenerator写入json文件。问题是JsonGenerator每次从套接字接收到一个流时都覆盖该文件。我如何使它追加后续的流而不是覆盖?JsonGenerator将json数据附加到文件而无需过度编写
JsonFactory factory = new JsonFactory();
JsonGenerator generator = factory.createGenerator(
new File("transactions.json"), JsonEncoding.UTF8);
try {
while ((bytesRead = in.read(bytes)) != -1){ // -1 indicates EOF
output= new String(bytes, "UTF-8");
String length = output.substring(0, 4).trim();
String mti = output.substring(4, 8).trim();
String resp = "000";
String newoutput = "";
String bitmap = output.substring(8, 24);
String stan = output.substring(24, 30);
String date = output.substring(30, 44);
String function_code = output.substring(44, 47);
mti = "1814";
// output to file
generator.writeStartObject();
generator.writeStringField("MTI", mti);
generator.writeStringField("lenght", length);
generator.writeStringField("stan", stan);
generator.writeStringField("date", date);
generator.writeStringField("Function Code", function_code);
generator.writeEndObject();
}
} catch (Exception e) {
System.out.println("Exceptions "+e);
}finally{
generator.close();
}
此外,当我宣布发电机while循环外,并关闭外循环出于某种原因,数据不被写入文件,所以我还挺假设发电机喜欢它,当你关闭它写入缓冲区文件。
如果你正在写多个对象,那么他们将是一个数组 –
你知道你应该确保你阅读整个消息吗?在你呈现的这段代码中,它可能会读取一半的消息并尝试处理它,这可能会导致异常。你应该有一些协议,它从套接字读取inputStream的块,并且只处理整个块,而不是一半加载。 –
如果你使用java 1.7,你应该在finally块中关闭generator,或者在“try-with-resources”中使用它。 –