首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何修复流关闭异常

如何修复流关闭异常
EN

Stack Overflow用户
提问于 2019-07-25 23:08:14
回答 2查看 2.5K关注 0票数 5

我正在工作的一个小程序,我可以写一个列表到json文件中,所以我创建了两个实例的经销商类,然后添加到"dealerList“。

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

代码语言:javascript
运行
复制
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();
            }
    }

我得到的堆栈是:

代码语言:javascript
运行
复制
java.io.IOException: Stream Closed
    at java.io.FileOutputStream.writeBytes(Native Method)
    at java.io.FileOutputStream.write(FileOutputStream.java:326)
    at com.fasterxml.jackson.core.json.UTF8JsonGenerator._flushBuffer(UTF8JsonGenerator.java:2093)
    at com.fasterxml.jackson.core.json.UTF8JsonGenerator.close(UTF8JsonGenerator.java:1137)
    at com.fasterxml.jackson.databind.ObjectMapper._configAndWriteValue(ObjectMapper.java:3983)
    at com.fasterxml.jackson.databind.ObjectMapper.writeValue(ObjectMapper.java:3245)
    at com.Ayoub.Main.main(Main.java:26)

我让Stream closed excepetion

EN

Stack Overflow用户

回答已采纳

发布于 2019-07-25 23:15:41

我想杰克逊在调用writeValue之后会自动关闭你的流。您可以通过以下方式关闭此功能:

代码语言:javascript
运行
复制
MessagePackFactory messagePackFactory = new MessagePackFactory();
messagePackFactory.disable(JsonGenerator.Feature.AUTO_CLOSE_TARGET);
ObjectMapper objectMapper = new ObjectMapper(messagePackFactory);

不要忘记在某个时间点关闭流;-)

票数 4
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57205187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档