使用Java NIO读取和写入大文件(> 1Gb)吗?

问题描述 投票:0回答:1

我正在尝试在每个事务中将通常大于1 Gb的大文件读写到另一个存储位置。就性能和低内存(防止任何OOM情况)而言,通过将文件写入另一个存储位置来传输文件,最有效的方法是什么?

[我看到Java NIO与传统Java IO相比是一种更有效的方法,但是它真的适合我的用例,并且会过时吗?

java performance nio large-files memory-efficient
1个回答
-1
投票

我已尝试复制此大小(1GB)的大文件。与Java NIO本身相比,所花费的时间更多地取决于基础硬件和网络状态。作为我刚才尝试的一个简单示例,复制989M文件需要以下平均时间。

注意:文件已经存在并且需要替换时,差别不大。

  1. 从SSD文件夹到SSD文件夹:4ms
  2. 从SSD文件夹到HDD(5400rpm)文件夹:〜7ms
  3. 从HDD(5400rpm)文件夹到SSD文件夹:4ms
  4. 从HDD(5400rpm)文件夹到HDD(5400rpm)文件夹:〜7ms

我观察到以下内容:

  1. 该读数并没有造成太大变化。
  2. 用新内容替换现有文件不会造成太大差异。
  3. 基于硬盘的写入有所不同。

当我们在网络驱动器上运行测试时,由于网络变量,我确定会有很大的差异。

© www.soinside.com 2019 - 2024. All rights reserved.