Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Bytearrayoutputstream的实际用途是什么_Java_Api_Io - Fatal编程技术网

Java Bytearrayoutputstream的实际用途是什么

Java Bytearrayoutputstream的实际用途是什么,java,api,io,Java,Api,Io,我已经理解了Bytearrayoutputstream api。我的问题有点不同。我有兴趣了解什么是我将使用它的真实生活场景?出于各种原因,我似乎只觉得FileIO是有用的,我试图理解Bytearrayoutputstream的用例。如果您正在生成瞬态数据,最好使用字节数组来存储数据,而不是担心以后可能需要清理文件的所有情况File.deleteOnExit()泄漏内存并在系统崩溃时失败。对于临时数据,从自动垃圾收集中获益很好 在具有会话复制的群集web应用程序上下文中,它还允许您在用户会话中共

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

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


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

我们可以使用
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;
}

由于我经常在测试中使用原始帖子,所以这篇文章值得称赞。特别是在我测试处理二进制数据的代码时,“实际用途”是当您想写入字节数组而不是文件、套接字或。。。这种事经常发生。真正的问题是为什么你认为那没有用。