Создание подкласса NSInputStream для загрузки определенной части данных из локального пути к файлу
У меня 100 МБ данных в одном файле. Эти 100 МБ данных будут разделены виртуально. то есть мне нужно создать NSInputStream, который указывает на разные блоки по 5 МБ. Это возможно путем создания потока с NSData.
Но скорее я хотел бы знать, могу ли я иметь NSInputStream, который указывает на диапазон данных в файле?
1 ответ
Если вы хотите загрузить файл, передав 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