java – FileOutputStream.close在写大文件时非常慢
发布时间:2020-12-14 19:16:28 所属栏目:Java 来源:网络整理
导读:我有一个方法,使用此代码通过TCP套接字接收文件: FileOutputStream fileStream = new FileOutputStream(filename.getName());while (totalRead FileOutputStream.close在接收大文件时花了很长时间,为什么呢?正如你所看到的那样,我正在每个收到的大块上冲洗
我有一个方法,使用此代码通过TCP套接字接收文件:
FileOutputStream.close在接收大文件时花了很长时间,为什么呢?正如你所看到的那样,我正在每个收到的大块上冲洗流. 最佳答案
根据操作系统的不同,flush()不再强制将数据写入操作系统.在FileOutputStream的情况下,write()将所有数据传递给OS,因此flush()不执行任何操作.其中close()可以确保文件实际写入磁盘(或不依赖于操作系统).您可以在写入数据时查看磁盘是否仍处于忙碌状态.
一个500 MB的文件需要30秒,这意味着你写的是17 MB / s.这听起来像一个非常慢的磁盘或网络共享/驱动器中的文件. 你可以试试这个
版画
你可以从速度上看到,即使在收盘时,它也不会写入数据.即驱动器不是那么快. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |