Создание подкласса 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
Другие вопросы по тегам