Java 如何修复流关闭异常
我正在开发一个小程序,可以将列表写入json文件,所以我创建了Dealer类的两个实例,然后将其添加到“dealerList”中 我试图写入名为“Dealer.json”的json文件,因此我从名为“dealerList”的列表中读取对象,然后将其写入json文件Java 如何修复流关闭异常,java,json,stream,Java,Json,Stream,我正在开发一个小程序,可以将列表写入json文件,所以我创建了Dealer类的两个实例,然后将其添加到“dealerList”中 我试图写入名为“Dealer.json”的json文件,因此我从名为“dealerList”的列表中读取对象,然后将其写入json文件 public class Main { private static List<Dealer> dealerList = new ArrayList<>(); public static vo
public class Main {
private static List<Dealer> dealerList = new ArrayList<>();
public static void main(String[] args) {
Dealer dearler = new Dealer("Chevrolet");
dearler.addCartoDealer(new Cars("Camaro","Steve",11000));
dearler.addCartoDealer(new Cars("Coverette","Jhon",22000));
Dealer dearler1 = new Dealer("Ford");
dearler1.addCartoDealer(new Cars("Ford1","Jessie",11000));
dearler1.addCartoDealer(new Cars("Ford2","Smith",22000));
dealerList.add(dearler);
dealerList.add(dearler1);
ObjectMapper mapper = new ObjectMapper();
try(FileOutputStream newFile = new FileOutputStream("Dealer.json")){
for(Dealer dealer:dealerList){
mapper.writeValue(newFile,dealer);
}
} catch (IOException e){
e.printStackTrace();
}
}
我已经关闭了流,但是我想Jackson在调用
writeValue
后会自动关闭您的流。您可以通过以下方式关闭此功能:
MessagePackFactory messagePackFactory = new MessagePackFactory();
messagePackFactory.disable(JsonGenerator.Feature.AUTO_CLOSE_TARGET);
ObjectMapper objectMapper = new ObjectMapper(messagePackFactory);
不要忘记在某个时间点自己关闭流;-) 刚刚发现应该添加:
JsonFactory jsonFactory = new JsonFactory();
jsonFactory.configure(JsonGenerator.Feature.AUTO_CLOSE_TARGET,false);
ObjectMapper mapper = new ObjectMapper(jsonFactory);
MessagePackFactory是jackson软件包的一部分吗?因为intellij似乎没有导入它,如果你能提供package@souidwejden您还可以在默认的
JsonFactory
上配置此功能,如下所示:objectMapper.getFactory().disable(JsonGenerator.feature.AUTO\u CLOSE\u目标)代码>。如果需要,还可以使用任何其他JsonFactory
实现。
JsonFactory jsonFactory = new JsonFactory();
jsonFactory.configure(JsonGenerator.Feature.AUTO_CLOSE_TARGET,false);
ObjectMapper mapper = new ObjectMapper(jsonFactory);