IO之BufferedOutputStream

当使用BufferedOutputStream为其做缓冲的时候,dataOutputStream对象的size为0,而不使用BufferedOutputStream做缓冲时,dataOutputStream值获取正常?

String string = "数据类型";
        double d = 2.3;
        long p = 10L;
        byte[] byteArray = null;
        ByteArrayOutputStream bout = new ByteArrayOutputStream();
      **//DataOutputStream dataOutputStream = new DataOutputStream(new BufferedOutputStream(bout));**
        DataOutputStream dataOutputStream = new DataOutputStream(bout);
        try {
            dataOutputStream.writeUTF(string);
            dataOutputStream.writeLong(p);
            dataOutputStream.writeDouble(d);
            **System.out.println(dataOutputStream.size());**
            byteArray = bout.toByteArray();
            dataOutputStream.flush();
            dataOutputStream.close();
            bout.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

为什么这样可以:

DataInputStream dataInputStream = new DataInputStream(new BufferedInputStream(new ByteArrayInputStream(bs)));
            try {
                System.out.println(dataInputStream.readUTF());
                System.out.println(dataInputStream.readLong());
                System.out.println(dataInputStream.readDouble());
            } catch (IOException e) {
                e.printStackTrace();
            }
阅读 2.1k
1 个回答

dataOutputStream.flush();在先,System.out.println(dataOutputStream.size());在后

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题