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
一直在内存中。这不适用于大文件,所以我更愿意使用 NSInputStream
。 NSInputStream
是否可以乱序读取块以及如何或应该使用其他方法?
您可以打开基于文件的 NSInputStream
,然后使用 NSStreamFileCurrentOffsetKey
属性 指定所需的偏移量。同时,如果在 NSURLRequiest
内实现上传 NSInputStream
,则块的大小不受您的控制。它的值硬编码在 CFNetworking 框架中。
我想知道是否有办法使用 NSInputStream
读取具有一定偏移量的数据块。例如,有一个大小为 100MB 的文件,我需要大小为 10MB 的块,但我需要第一个块之前的第 5 个块。
目标是能够将大文件上传到服务器。后端需要可以立即发送的数据块。例如,我们的想法是使用 NSOperationQueue
并将 maxConcurrentOperationCount
设置为 5。每个任务都需要不同的块来发送。我知道 - (NSData *)subdataWithRange:(NSRange)range
- 但这需要整个 NSData
一直在内存中。这不适用于大文件,所以我更愿意使用 NSInputStream
。 NSInputStream
是否可以乱序读取块以及如何或应该使用其他方法?
您可以打开基于文件的 NSInputStream
,然后使用 NSStreamFileCurrentOffsetKey
属性 指定所需的偏移量。同时,如果在 NSURLRequiest
内实现上传 NSInputStream
,则块的大小不受您的控制。它的值硬编码在 CFNetworking 框架中。