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

时间:2013-05-03 12:34:12

标签: ios objective-c nsstream nsinputstream cfreadstream

我在一个文件中有100 MB的数据。这个100 MB的数据将被虚拟划分。即,我需要创建一个指向不同5MB块的NSInputStream。 这可以通过使用NSData创建流来实现。

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

1 个答案:

答案 0 :(得分:2)

如果要通过将NSInputStream实例传递给NSURLRequest.HTTPBodyStream来上传文件,则确实必须创建NSInputStream的子类,并且只传输要上传的字节。此处不能使用NSFileHandle

创建一个与NSInputStream一起使用的NSURLRequest的子类非常棘手,但幸运的是,great blog post是关于如何实现它的。{/ p>

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

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

Swift示例:

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