最近需要写一个文件拷贝的代码,除了传统流的方式以外,考虑到android是基于linux内核上的一层虚拟机实现,可以调用linux内置的一些常用的shell命令,因此首先想到cp,但是遗憾的是android貌似没有提供这个命令。当然,可以用dd if=/sdcard/a.mp3 of=/sdcard/b.mp3实现,本来以为内置的shell命令是c编译的,效率应该比java流快,但是实际测试拷贝一个30多m的pdf文件,多次取样平均值以后,发现在模拟器里面,java流要比dd命令要快8-10s的时间,差距非常明显。现在就有点疑惑了,首先,是dd命令本身的问题,其本身效率实现就比较底下吗?(linux菜鸟,没看过dd源码)其次是android的虚拟机到底做了什么处理,导致这种差异?优化效果有这么明显吗?