NSInputStream 能否用于读取具有偏移量的数据块以便能够上传大文件

Can NSInputStream be used to read chunks of data with offset to be able to upload large files

我想知道是否有办法使用 NSInputStream 读取具有一定偏移量的数据块。例如,有一个大小为 100MB 的文件,我需要大小为 10MB 的块,但我需要第一个块之前的第 5 个块。

目标是能够将大文件上传到服务器。后端需要可以立即发送的数据块。例如,我们的想法是使用 NSOperationQueue 并将 maxConcurrentOperationCount 设置为 5。每个任务都需要不同的块来发送。我知道 - (NSData *)subdataWithRange:(NSRange)range - 但这需要整个 NSData 一直在内存中。这不适用于大文件,所以我更愿意使用 NSInputStreamNSInputStream 是否可以乱序读取块以及如何或应该使用其他方法?

您可以打开基于文件的 NSInputStream,然后使用 NSStreamFileCurrentOffsetKey 属性 指定所需的偏移量。同时,如果在 NSURLRequiest 内实现上传 NSInputStream ,则块的大小不受您的控制。它的值硬编码在 CFNetworking 框架中。