我在一个文件中有100 MB的数据。这100 mb的数据将被虚拟地分割。也就是说,我需要创建一个指向不同的5MB块的NSInputStream。这可以通过使用NSData创建流来实现。
而是我想知道我是否可以有一个NSInputStream指向文件中的数据范围?
如果你想通过传递一个NSInputStream
实例到NSURLRequest.HTTPBodyStream
来上传一个文件,你确实必须创建一个NSInputStream
的子类,并且只流式传输你想要上传的字节。这里不能使用NSFileHandle
。
创建NSInputStream
的子类与NSURLRequest
一起工作是相当棘手的,但幸运的是,这里有一篇关于如何完成它的很棒的博客文章。
在这里你可以找到一个准备使用NSInputStream
的子类。
你可以给ChunkInputStream
另一个NSInputStream
读取文件,并传递起始位置和字节数来读取。
迅速的例子:
let fileInputStream = NSInputStream(fileAtPath: "/tmp/readme")
let inputStream = ChunkInputStream(inputStream: fileInputStream)
inputStream.startPosition = 2097152
inputStream.readMax = 1048576