我已经将一些 C# 代码转换为 Java/Android 代码。基本上我正在解密 sdcard 上的文件(比如 a.mp4.enc)并将其写回私有数据文件夹(/data/app/a.mp4)。现在同样的事情发生在桌面系统上,代码就是这样
byte[] buffer = new byte[1024*10];
int len;
while ((len = cryptostream.Read(buffer, 0, buffer.Length)) > 0)
{
outputStream.Write(buffer, 0, len);
buffer = new byte[1024*10];
}
在 android 模拟器上,我运行以下命令:
byte[] buffer = new byte[1024 * 10];
int len = cryptoStream.read(buffer, 0, buffer.length);
while (len > 0) {
out.write(buffer, 0, len);
len = cryptoStream.read(buffer, 0, buffer.length);
}
但是 C# 代码需要 0.1 秒来转换 6mb 文件,而模拟器需要 20 分钟!我的代码有问题还是只是模拟器和Android方式,因为它似乎太长了!!我需要做些不同的事情吗?我试过不从 SD 卡读取,而是从应用程序数据文件夹本身读取,但性能没有显着提高。