大聪明xd 2020-11-03 17:10 采纳率: 0%
浏览 53

MapperUtils.INSTANCE.map 映射流对象

通过这个方法映射 流对象 映射过后的流 无法操作 一直报错流关闭 有大佬知道怎么回事吗 我同事用socket也遇到了同样的wen't

public static void change() throws IOException {
       Class1 class1 = new Class1();
       class1.setInputStream(new FileInputStream(new File("e://a.txt")));

       Class2  class2= MapperUtils.INSTANCE.map(Class2.class,class1);

        InputStream inputStream=class2.getInputStream();
        byte[] buffer=new byte[1024];
        int len=0;
        ByteArrayOutputStream bos=new ByteArrayOutputStream();
        while((len=inputStream.read(buffer))!=-1){
            bos.write(buffer,0,len);
        }


    }
        ![图片说明](https://img-ask.csdn.net/upload/202011/03/1604394569_67404.png)

  • 写回答

1条回答 默认 最新

  • 小小鱼儿小小林 全栈领域优质创作者 2023-05-30 11:46
    关注

    可以使用try-with-resources语句来自动关闭流,同时也可以使用IOUtils类中的方法来简化流的读取操作。修改后的代码如下:

    public static void change() throws IOException {
        Class1 class1 = new Class1();
        class1.setInputStream(new FileInputStream(new File("e://a.txt")));
    
        Class2 class2 = MapperUtils.INSTANCE.map(Class2.class, class1);
    
        try (InputStream inputStream = class2.getInputStream();
             ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
            IOUtils.copy(inputStream, bos);
            byte[] result = bos.toByteArray();
            // 对result进行操作
        }
    } 
    
    

    其中,IOUtils.copy方法可以将输入流中的数据复制到输出流中,这里使用了ByteArrayOutputStream作为输出流,最后通过toByteArray方法获取字节数组。同时,try-with-resources语句会自动关闭输入流和输出流,避免了手动关闭流的繁琐操作。

    评论

报告相同问题?

悬赏问题

  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面