инициализировать NSInputStream из определенной части файла (скопированного в каталог документов)?

Я загружаю большой файл из своего приложения для iOS, и передача файла выполняется в виде фрагмента загрузки. Я использую приведенный ниже код для инициализации NSInputStream для фрагментов.

// Например

NSInteger chunkCount =  20;
for(int i=0; i<chunkCount; i++) {
  NSFileHandle *handle = [NSFileHandle fileHandleForReadingAtPath:filePath];
  [handle seekToFileOffset:(unsigned long long)i * (chunkCount == 1?fileSize:chunkSize)];
  NSData *fileData = [handle readDataOfLength:chunkSize];
  NSInputStream *iStream = [[NSInputStream alloc]initWithData:fileData];
  }

Но я хотел бы знать, могу ли я иметь метод NSInputStream, с помощью которого я могу инициализировать iStream из диапазона файлового потока, а не NSData.

Спасибо


person iOS_Developer    schedule 10.04.2014    source источник
comment
Теоретически можно создать подкласс NSInputStream, но это кажется сложным, см. bjhomer.blogspot. de/2011/04/subclassing-nsinputstream.html.   -  person Martin R    schedule 10.04.2014


Ответы (1)


Существует свойство NSStreamFileCurrentOffsetKey для файловых потоков, чтобы указать смещение чтения.

NSInputStream *s = [NSInputStream inputStreamWithFileAtPath:path];
[s setProperty:offset forKey:NSStreamFileCurrentOffsetKey];
person Pavel Osipov    schedule 10.04.2014