【问题标题】:Sending big String over BufferedWriter通过 BufferedWriter 发送大字符串
【发布时间】:2011-04-27 15:08:09
【问题描述】:

使用 BufferedWriter 发送大字符串(5Mb,一个 xml 文件,全部为一行)是否有问题?

它的工作速度非常快。是否有一些黄金法则不允许行长于几 K?那我就得写一些额外的文件传输协议... :-(

【问题讨论】:

    标签: java string networking bufferedwriter


    【解决方案1】:

    BufferedWriter 本身无法确定事情进展的速度。它只是为你做一些缓冲。这实际上取决于您当时要写入的内容...在 LAN 上,5MB 并不是特别大,但通过移动连接则需要很长时间。

    换句话说:这取决于。没有禁止长行的“黄金法则”......但是我们不知道您使用的是什么协议。在您的特定协议中可能存在 大小限制。如果您想要更详细的答案,则必须为您的问题添加更多详细信息...

    【讨论】:

      【解决方案2】:

      如果它有效,那么它就有效。如果它不起作用,请将字符串分成块。

      【讨论】:

        【解决方案3】:

        这 5Mb 行是您正在编写的唯一内容吗?如果是这样,那么BufferedWriter 不会在它包装的Writer 上添加任何内容。 BufferedWriter 如果您正在执行大量小写入并希望将它们缓冲成更大的块以发送到底层Writer,这可能会对其write() 方法产生开销(例如磁盘寻道时间/旋转延迟)。

        【讨论】:

          【解决方案4】:

          接收方可能存在一个小问题 - 这是否接受这么长的线路? 有些程序可能准备好接收长行,但针对短行的常见情况进行了优化,因此使用长行会减慢它们的速度。

          另外,一行的确切组成也取决于系统——通常这意味着它后面有一个\n(Unix),或者一个\r\n(DOS/Windows/大多数公共互联网协议)。

          另外,请注意,写入的行对 BufferedWriter write 方法的调用是两个正交的东西 - 你可以多次调用 write,只写一个一行,或者你可以只用一个write调用写多行。

          【讨论】:

            猜你喜欢
            • 2013-06-28
            • 2014-01-01
            • 1970-01-01
            • 2020-02-17
            • 1970-01-01
            • 1970-01-01
            • 2014-02-09
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多