Привет в моем приложении. Я загружаю файл в формате pdf, и этот общий размер я получаю в кусках. Теперь, когда я получаю эти данные в кусках, я сохраняю в объекте NSData и оставшихся фрагментах, которые я добавляю к одному и тому же объекту. в то время как это приложение получает краш с низким предупреждением памяти. Есть ли способ записать данные на диск в следующий раз, добавив данные в письменный файл в песочнице. Когда-то файл более 400 Мб. Пожалуйста, помогите мне.Как записать данные в куски на диск в ios
1
A
ответ
0
Вы можете использовать NSOutputStream
2
NSFileHandle
могут быть использованы для этого:
Что-то вроде этого:
Шаг 1: Создание Ивар называется _outputFileHandle
;
NSFileHandle *_outputFileHandle;
Шаг2: Вызов prepareDataHandle
раз:
Step3:. Вызов writingDataToFile
всякий раз, когда нездоровой данные поступают в
Изменить вашу работу потока, соответственно, так что он может сказать, когда загрузка файла завершена.
-(void)prepareDataHandle
{
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *outputFilePath = [documentsDirectory stringByAppendingPathComponent:@"anoutputfile.xxx"];
if ([[NSFileManager defaultManager] fileExistsAtPath:outputFilePath] == NO)
{
NSLog(@"Create the new file at outputFilePath: %@", outputFilePath);
BOOL suc = [[NSFileManager defaultManager] createFileAtPath:outputFilePath
contents:nil
attributes:nil];
NSLog(@"Create file successful?: %u", suc);
}
_outputFileHandle = [NSFileHandle fileHandleForWritingAtPath:outputFilePath];
}
-(void)writingDataToFile:(NSData *)dataToWrite
{
if (dataToWrite.length != 0)
{
[_outputFileHandle writeData:dataToWrite];
}
else //you can use dataToWrite with length of 0 to indicate the end of downloading or come up with some unique sequence yourself
{
NSLog(@"Finished writing... close file");
[_outputFileHandle closeFile];
}
}