文件拷贝效率与操作系统
内核态空间:
操作系统底层分为内核态空间和用户态空间。其中系统内核和硬件驱动等都属于内核态空间,它拥有较高的特权。
用户态空间:
则是普通应用和服务所在的空间
数据拷贝的方法:
数据拷贝主要有以下3种方法:
a .使用inputstream 和outputstream。然后使用inputstream的read()方法读取数据,outputstream的write()方法写数据。
b.使用IO库的TransferTo 方法。
c.使用java基本库的files.copy() 方法。
根据操作系统底层特性,在我们进行数据读取和输入操作的时候,其实需要将数据从内核空间读取到内核缓存,然后用户缓存在将数据读取出来。因此比较上面说的3种方法的效率的话,最高的是TransferTo 方法,因为可以达到一个零拷贝的效果,把需要处理的文件直接从内核空间中读取出来,这样就避免了过多的上下文切换,提高了效率。