【发布时间】:2012-04-18 07:07:45
【问题描述】:
某段代码是这样工作的:
- 从磁盘读取文件并将其作为 NSData 存储在内存中
- 加密(解密)它,从而在内存中产生一个相同大小的额外 NSData 对象
- 将加密(解密)数据写入磁盘
现在,对于大小为 10 或 100 mb 的文件,这可以正常工作并保持每秒处理字节数的一致速率(因此处理 100 mb 文件将需要 10 倍于 10 mb 的文件)。如果我说 1.5 gigs,那么系统必须将其中的 2 个保留在内存中,以便它开始交换到磁盘,这会大大降低速度。
所以我想也许以下是可能的:
- 查看文件并将其拆分为 100mb 的块(例如)
- 读取一个块
- 加密(解密)它
- 将加密块附加到输出文件
- 把原来的chunk扔掉,这样整个过程最多占用200mb的RAM
我的问题是:
- 这可能吗?
- 如果是这样,这是最好的方法吗?
- 如果是这样,我将如何实施?
【问题讨论】:
-
您需要说明您在这方面有什么问题吗?
-
分块读取文件,对其进行处理并将它们写回以形成一个新文件。我只是不太精通这种低级的东西,比如操纵记忆之类的东西,我想我得读一些理论了