“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带你学架构
!
如果本篇文章对您有帮忙,还请帮忙点个关注和赞,您的保持是我一直创作的能源。欢送关注同名微信公众号获取更多技术干货!