一线大厂面试真题——Java有几种文件拷贝方式,哪一种效率最高

77 阅读1分钟

问题解答

第一种,使用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多路复用机制等等。

对于求职者来说,这块内容的重要性也不言而喻。