Как сохранить изображения и записанные файлы в каталоге temp?
Я хочу хранить фотографии, сделанные с камеры и видеозаписи из моего приложения в отдельной папке во временных каталогах на некоторое время. И по мере выполнения задачи они будут сохраняться в базе данных.
Как сохранить фотографии, сделанные из файлов камеры и видеозаписи в отдельной папке в каталогах temp?
6 ответов
вы ищете это, чтобы получить tot он кэширует папку для хранения временных файлов:
NSString* path = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,
NSUserDomainMask,
YES) lastObject];
оттуда вы можете использовать NSFileManager
для создания и удаления нужных каталогов. И хранить файлы так же, как и любую другую часть файловой системы. Просто имейте в виду, что система будет очищать каталог кэшей время от времени.
поэтому никогда не полагайтесь на файл, оставшийся или исчезающий, между перезапусками вашего приложения.
попробуйте это:
NSString *tmpDirectory = NSTemporaryDirectory();
NSString *tmpFile = [tmpDirectory stringByAppendingPathComponent:@"temp.txt"];
NSLog(@"Temp File:%@", tmpFile);
Если вы хотите удалить все файлы из временного каталога, используйте это.
//cleanup temp files
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *paths = NSTemporaryDirectory();
NSArray *contents = [fileManager contentsOfDirectoryAtPath:paths error:NULL];
NSEnumerator *e = [contents objectEnumerator];
NSString *filename;
//NSLog(@"paths: %@ ... contents: %@ ...",paths, contents);
while ((filename = [e nextObject]))
{
[fileManager removeItemAtPath:[paths stringByAppendingPathComponent:filename] error:NULL];
}
сохранить изображение в каталоге Temp
-(void)savePhotoToAlbum:(UIImage*)imageToSave withName:(NSString*)imageName {
NSURL *tmpDirURL = [NSURL fileURLWithPath:NSTemporaryDirectory() isDirectory:YES];
NSURL *fileURL = [[tmpDirURL URLByAppendingPathComponent:imageName] URLByAppendingPathExtension:@"png"];
NSLog(@"fileURL: %@", [fileURL path]);
NSData *pngData = UIImagePNGRepresentation(imageToSave);
[pngData writeToFile:[fileURL path] atomically:YES]; //Write the file
}
для получения и отображения изображений из директории Temp
NSString *tmpDirectory = NSTemporaryDirectory();
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *cacheFiles = [fileManager contentsOfDirectoryAtPath:tmpDirectory error:&error];
for (NSString *file in cacheFiles)
{
NSLog(@"%@",file);
error = nil;
if ([file.pathExtension isEqual:@"png"]){
NSString *filePath = [tmpDirectory stringByAppendingPathComponent:file];
UIImage *image = [[UIImage alloc] initWithContentsOfFile:filePath];
}
}
вы можете создать свою собственную временную папку...
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *tempFolderPath = [documentsDirectory stringByAppendingPathComponent:@"Temp"];
[[NSFileManager defaultManager] createDirectoryAtPath:tempFolderPath withIntermediateDirectories:YES attributes:nil error:NULL];
чтобы сохранить фото и видео в другом каталоге, вам нужно изменить там путь к каталогу и сохранить там путь к вашей базе данных. проверьте ниже код, чтобы создать папку в каталог документов, и сохранить файл с уникальным именем.
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder
NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@“/images”];
if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
{
[[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error];
}
NSString *destinationPath = [dataPath stringByAppendingFormat:@"/output_%@.jpg", [dateFormatter stringFromDate:[NSDate date]]];