gpt4 book ai didi

cocoa - 基于 NSData 倒回 NSInputStream

转载 作者:行者123 更新时间:2023-12-03 16:15:10 26 4
gpt4 key购买 nike

我有一个 NSData,我想将其作为 NSInputStream 读取。这样我就可以拥有一致的 API 来处理文件和内存中的数据。作为处理的一部分,我想确保流以某些字节集开头(如果不是,我需要以不同的方式处理它)。如果类型错误,我想避免将整个文件读入内存。

所以我正在寻找一种倒带流的方法,或者一种在不移动读取指针的情况下“查看”​​即将到来的字节的方法。如果这是使用 URL 创建的 NSInputStream,我可以在 NSStreamFileCurrentOffsetKey 上使用 setProperty:forKey: ,但奇怪的是,这不适用于从 NSData 创建的 NSInputStream (即使您认为这比文件版本更容易实现) )。我也无法关闭并重新打开 steam 来重置输入指针(NSStream 明确不允许这样做)。

我可以使用仅 NSData 接口(interface)和 -initWithContentsOfMappedFile 来解决这个问题,但如果可以的话,我宁愿继续使用 NSStream 方法。

最佳答案

我想我有些不明白。 NSInputStream 可以从三个地方获取数据:套接字、NSData 对象或文件。您还没有说过要使用套接字,因此将其他两个作为数据源。另外, NSStream 的文档说只有基于文件的流是可查找的。 (NSStream,概述,第三段)

鉴于此,我认为 NSData 对象将是更好的选择。 NSData 对象将处理文件和字节(我认为这就是内存中数据的含义)。

但是您考虑了这一点并说您更愿意坚持使用流。这里还有其他考虑吗?

(编辑)抱歉,我应该把这个作为一个真正的答案。我对您所描述的问题的回答是,使用 NSData 确实是正确的做法。

如果您更喜欢不同的答案,请提供更多详细信息。

关于cocoa - 基于 NSData 倒回 NSInputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2230461/

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