"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中提供的NIOtransferTo和transfFrom方法也称为零拷贝实现。它可以利用现代操作系统的底层机制来避免不必要的复制和上下文切换,因此在性能上表现得更好。总结一下关于文件IO的问题和内容,属于Java中的基础知识,但是随着这门技术知识的延伸,会涉及到NIO、AIO、零拷贝、IO多路复用机制等等。对于求职者来说,这个内容的重要性不言而喻。大家记得点赞收藏关注哦!版权声明:除特别声明外,本博客所有文章均采用CCBY-NC-SA4.0许可协议。转载请注明来自Mic带你学建筑!如果本文对您有帮助,请给个关注和点赞。您的坚持是我不断创作的动力。欢迎关注同名微信公众号获取更多技术干货!
