乐趣区

关于java:Java面试Java有几种文件拷贝方式哪一种效率最高

“Java 有几种文件拷贝形式,哪一种效率最高?”

这个问题是京东一面的时候,针对 4 年教训的同学的一个面试题。

大家好,我是 Mic,一个工作了 14 年的 Java 程序员。

对于这个问题的答复,我把文字版本整顿到了 15W 字的面试文档外面。

大家能够在我的主页加 V 支付。

上面看看高手的答复。

高手:

第一种,应用 java.io 包下的库,应用 FileInputStream 读取,再应用 FileOutputStream 写出。

第二种,利用 java.nio 包下的库,应用 transferTo 或 transfFrom 办法实现。

第三种,Java 规范类库自身曾经提供了 Files.copy 的实现。

对于 Copy 的效率,这个其实与操作系统和配置等状况相干,在传统的文件 IO 操作外面,咱们都是调用操作系统提供的底层规范 IO 零碎调用函数 read()、write(),因为内核指令的调用会使得以后用户线程切换到内核态,而后内核线程负责把相应的文件数据读取到内核的 IO 缓冲区,再把数据从内核 IO 缓冲区拷贝到过程的公有地址空间中去,这样便实现了一次 IO 操作。

而 NIO 外面提供的 NIO transferTo 和 transfFrom 办法,也就是常说的零拷贝实现。

它可能利用古代操作系统底层机制,防止不必要拷贝和上下文切换,因而在性能上体现比拟好。

总结

对于文件 IO 方面的问题和内容还挺多的这块属于 Java 外面的基础知识,然而随着这个技术常识的延展,会波及到 NIO、AIO、零拷贝、IO 多路复用机制等等。

对于求职者来说,这块内容的重要性也显而易见。

大家记得点赞珍藏加关注!

版权申明:本博客所有文章除特地申明外,均采纳 CC BY-NC-SA 4.0 许可协定。转载请注明来自 Mic 带你学架构
如果本篇文章对您有帮忙,还请帮忙点个关注和赞,您的保持是我一直创作的能源。欢送关注同名微信公众号获取更多技术干货!

退出移动版