Bytearrayoutputstream的实际用途是什么

时间:2014-03-10 02:27:47

标签: java api io

我已经理解了Bytearrayoutputstream api。我的问题有点不同。我有兴趣了解我将使用它的真实生活场景是什么?出于各种原因,我似乎只觉得FileIO很有用,我试图理解Bytearrayoutputstream的用例。

2 个答案:

答案 0 :(得分:1)

如果您正在生成瞬态数据,那么使用字节数组来存储数据要好得多,而不是担心以后可能需要清理文件的所有情况。 File.deleteOnExit()泄漏内存并在系统崩溃时失败。对于临时数据,很高兴从自动垃圾收集中受益。

在具有会话复制的群集Web应用程序的上下文中,它还允许您在用户会话中共享数据。如果用户的会话被移动到另一个节点,则该数据仍可供Web应用程序使用。磁盘上的文件通常不是这种情况。

答案 1 :(得分:0)

我们可以使用ByteArrayOutputStream来计算对象内存的粗略大小

private int getBytesSize(Object o) {
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    ObjectOutput out = null;
    try {
        out = new ObjectOutputStream(bos);
        out.writeObject(o);
        return bos.toByteArray().size;
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (out != null) {
                out.close();
            }
        } catch (IOException ex) {
            // ignore close exception
        }
        try {
            bos.close();
        } catch (IOException ex) {
            // ignore close exception
        }
    }
    return 0;
}

贷方以https://stackoverflow.com/a/38188384

的原始帖子形式发送