gpt4 book ai didi

cocoa - 从文件中创建 NSData 以 block 读取它

转载 作者:行者123 更新时间:2023-12-03 17:14:47 24 4
gpt4 key购买 nike

某段代码的工作原理如下:

  1. 从磁盘读取文件并将其作为 NSData 存储在内存中
  2. 对其进行加密(解密),从而在内存中产生一个相同大小的额外 NSData 对象
  3. 将加密(解密)的数据写入磁盘

现在,对于大小为 10 或 100 mb 的文件,这种方法效果很好,并且保持每秒处理字节数的一致速率(因此处理 100 mb 文件所需的时间是 10 mb 文件的 10 倍)。如果我说 1.5 GB,那么系统必须在内存中保留其中 2 GB,以便它开始交换到磁盘,这会显着降低速度。

所以我认为也许以下是可能的:

  1. 查看文件并将其拆分为 100mb 的 block (例如)
  2. 读取一个 block
  3. 加密(解密)它
  4. 将加密 block 附加到输出文件
  5. 扔掉原来的 block ,这样整个过程最多占用 200mb RAM

我的问题是:

  1. 这可能吗?
  2. 如果是这样,这是最好的方法吗?
  3. 如果是这样,我将如何实现它?

最佳答案

你想做的事情是完全可能的。您的问题需要一个有点冗长的答案,因此我建议您访问此网页:

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Streams/Articles/ReadingInputStreams.html

请注意,页面中的示例涉及文件。您可以将缓冲区设置为您想要的大小,并一次读取任意数量的字节。您甚至会看到一个合适的地方来调用您的加密例程。

使用您创建的 NSMutableData 实例,您可以使用 -writeToFile:atomically:-writeToURL:atomically: 将其写入磁盘

尝试一下,并祝你事业顺利。

关于cocoa - 从文件中创建 NSData 以 block 读取它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10013423/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com