java—如何使用objectoutputstream为大量自定义对象编写数据块

8yoxcaq7  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(289)

我正在用java中的objectoutputstream编写一个巨大的自定义对象列表,代码片段如下,我的问题是objectoutputstream的用法
我应该使用bufferedoutputstream而不是objectoutputstream来提高循环中写操作的性能吗?或者有没有一种方法可以使用数据块写入objectoutputstream,以及如何在for循环中调用flush()?谢谢你的时间

protected void writeTransferObject(List<? extends DataTransfer> dataTransferList,
        HttpServletResponse response)
    {
        try (ObjectOutputStream oos = new ObjectOutputStream(response.getOutputStream()))
        {
            for ( DataTransfer dataTransfer : dataTransferList)
            {
                oos.writeObject(dataTransfer);

            }
        }
        catch (IOException ioe)
        {
            ioe.printStackTrace();
        }       
    }
oxalkeyp

oxalkeyp1#

首先,关于性能问题:java的运行速度总是快于磁盘的写入速度,因此在java中进行优化没有多大意义。
第二:输入/输出缓冲区:只有在执行低效的读/写操作时才需要这些缓冲区:例如,在读端,逐行读取而不是仅仅吞噬字节;在写端,在作为一个i/o操作发送之前,从多个位置写入一些零碎的内容。
第三:objectoutputstream:我强烈建议不要使用objectoutputstream(和dataoutputstream),并推荐jackson/json或xml作为替代。objectoutputstream仅适用于java,依赖于所有序列化对象来合理地实现可序列化,并且对类定义中的更改非常敏感。

相关问题