某段代码的工作方式如下:
- 从磁盘读取文件并将其作为 NSData 存储在内存中
- 加密(解密)它,从而在内存中产生一个相同大小的附加 NSData 对象
- 将加密(解密)的数据写入磁盘
现在,对于大小为 10 或 100 mb 的文件,这工作得很好,并保持每秒处理字节的一致速率(因此处理 100 mb 文件将需要 10 倍于 10 mb 的文件)。如果我说 1.5 gigs,那么系统必须将其中的 2 个保留在内存中,以便它开始交换到磁盘,这会大大降低速度。
所以我想也许以下是可能的:
- 查看文件并将其拆分为 100mb 块(例如)
- 读取一个块
- 加密(解密)它
- 将加密的块附加到输出文件
- 把原始块扔掉,这样整个过程最多占用 200mb 的 RAM
我的问题是:
- 那可能吗?
- 如果是这样,这是最好的方法吗?
- 如果是这样,我将如何实施它?