gpt4 book ai didi

java - 文件输入/输出流与文件 channel ——提供更好的性能

转载 作者:行者123 更新时间:2023-12-02 09:43:40 25 4
gpt4 key购买 nike

我正在编写一个程序,该程序必须在文件夹之间复制大量但不是大量的数据(一次复制几十张照片)。最初我使用 java.io.FileOutputStream 来简单地读取缓冲区并写出,但后来我听说使用 java.nio.FileChannel 可能会提高性能。

我没有资源来使用我所拥有的数据进行严格的、受控的测试,但似乎对于每种方法的优点没有达成共识(除了 FileChannel 是线程安全的)。一些用户报告 FileChannel 对于较小的文件非常有用,而其他用户则报告对于较大的文件速度有巨大的提高。

我想知道是否有人确切地知道创建 FileChannel 的最初目的是什么:它是为了更好的性能而设计的吗?什么情况下?对于一般类型的数据是否有明确的性能提升,或者我应该期望看到的差异是微不足道的,因为我没有处理足够专业的数据?

编辑:假设我的数据不需要线程安全。

最佳答案

FileChannel.transferFrom/To 应该比文件复制的 IO 流更快。

或者您可以简单地使用 Java 7 的 java.nio.file.Files.copy(source, target) 。这应该是尽可能快的。

但是,最终性能不会有明显差异 - 硬盘速度是瓶颈。

<小时/>

FileChannel 不是非阻塞的,并且不可选择。不确定他们将来是否会添加这些功能。 Java 7 有 AsynchronousFileChannel

关于java - 文件输入/输出流与文件 channel ——提供更好的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6588413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com