ios – 对NSInputStream进行子类化,以从本地文件路径上载特定部分的数据

我在一个文件中有100 MB的数据.这个100 MB的数据将被虚拟划分.即,我需要创建一个指向不同5MB块的NSInputStream.

这可以通过使用NSData创建流来实现.

但我想知道我是否可以拥有指向文件中一系列数据的NSInputStream?

最佳答案 如果要通过将NSInputStream实例传递给NSURLRequest.HTTPBodyStream来上载文件,则必须创建NSInputStream的子类,并仅传输要上载的字节.在这里不能使用NSFileHandle.

创建一个与NSURLRequest一起使用的NSInputStream子类非常棘手,但幸运的是这里有一个关于如何实现它的great blog post.

Here you can find a ready to use subclass of NSInputStream for this purpose.

您可以使用另一个读取文件的NSInputStream来提供ChunkInputStream,并传递开始位置和要读取的字节数.

Swift示例:

let fileInputStream = NSInputStream(fileAtPath: "/tmp/readme")
let inputStream = ChunkInputStream(inputStream: fileInputStream)
inputStream.startPosition = 2097152
inputStream.readMax = 1048576
点赞