Java 如何修复流关闭异常

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

我正在开发一个小程序,可以将列表写入json文件,所以我创建了Dealer类的两个实例,然后将其添加到“dealerList”中

我试图写入名为“Dealer.json”的json文件,因此我从名为“dealerList”的列表中读取对象,然后将其写入json文件

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);