我在一个文件中有 100 MB 的数据。这 100 mb 的数据将被虚拟分割。即,我需要创建一个指向不同 5MB 块的 NSInputStream。这可以通过使用 NSData 创建流来实现。
但是我想知道我是否可以拥有一个指向文件中数据范围的 NSInputStream ?
我在一个文件中有 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