我已经理解了Bytearrayoutputstream api。我的问题有点不同。我有兴趣了解我将使用它的真实生活场景是什么?出于各种原因,我似乎只觉得FileIO很有用,我试图理解Bytearrayoutputstream的用例。
答案 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;
}
的原始帖子形式发送