阅读更多
com.fasterxml.jackson.databind.ObjectMapper 在读取输入流变量的时候默认的将会关闭输入流。
如果你不希望关闭输入流,你可以设置 JsonParser.Feature.AUTO_CLOSE_SOURCE 参数为 false。
本测试方法,可以在 https://github.com/cwiki-us-demo/serialize-deserialize-demo-java/blob/master/src/test/java/com/insight/demo/serialize/MessagePackSerializer.java 中找到。
/**
* Serialization Not Close input stream
*/
@Test
public void testMessagePackSerializationNotCloseInputStream() {
logger.debug("testMessagePackSerializationNotCloseInputStream");
try {
File tempFile = File.createTempFile("messagepack-", "-cwiki.us");
MessagePacker packer = MessagePack.newDefaultPacker(new FileOutputStream(tempFile));
packer.packInt(42);
packer.packString("Hello");
packer.close();
FileInputStream in = new FileInputStream(tempFile);
ObjectMapper objectMapper = new ObjectMapper(new MessagePackFactory());
objectMapper.configure(JsonParser.Feature.AUTO_CLOSE_SOURCE, false);
System.out.println(objectMapper.readValue(in, Integer.class));
System.out.println(objectMapper.readValue(in, String.class));
in.close();
tempFile.deleteOnExit();
} catch (IOException ex) {
logger.error("Serialize Error", ex);
}
}
https://www.cwiki.us/display/Serialization/MessagePack+Jackson+Dataformat