我在一个文件中有 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