解决“真机上不能读取本地路径”的问题(需要在后面加上目录,不能在当前目录下操作)
- (void)saveImage:(UIImage *)tempImage WithName:(NSString *)imageName
{
NSData * imageData = UIImageJPEGRepresentation(tempImage, 0.5); // 对图片进行了压缩
NSString * fullPathToFile = [NSHomeDirectory() stringByAppendingString:[NSString stringWithFormat:@"/%@" ,imageName]];
// and then we write it out
[imageData writeToFile:fullPathToFile atomically:NO];
// 将存入到沙盒的图片再取出来,目的是为了进行上传
NSLog(@"fullPathToFile:%@", fullPathToFile);
// 二进制的数据就可以进行上传
UIImage * image = [UIImage imageWithContentsOfFile:fullPathToFile];
_image = image;
}
修改后的代码:
#pragma mark 保存图片到document
- (void)saveImage:(UIImage *)tempImage WithName:(NSString *)imageName
{
NSData * imageData = UIImageJPEGRepresentation(tempImage, 0.5); // 对图片进行了压缩
NSString * fullPathToFile = [NSHomeDirectory() stringByAppendingString:[NSString stringWithFormat:@“/Documents/%@" ,imageName]];
// and then we write it out
[imageData writeToFile:fullPathToFile atomically:NO];
// 将存入到沙盒的图片再取出来,目的是为了进行上传
NSLog(@"fullPathToFile:%@", fullPathToFile);
// 二进制的数据就可以进行上传
UIImage * image = [UIImage imageWithContentsOfFile:fullPathToFile];
_image = image;
}
c++获取ios沙盒路径
getenv("HOME");
应用产生的文件应该放在哪
为了避免iOS设备间同步和备份流程耗时太久,应该对文件归属目录的选择特别注意。
将用户数据保存于 Documents/. 用户数据包括那些需要让暴露给用户的文件 — 用户可以创建,删除,编辑的文件。 例如,对于视频和音频应用,用户数据包括用户下载过的文件等。
将应用创建的文件保存于Library/Application support/路径下。此目录下,用于保存应用自身使用,不暴露给用户的数据文件。包括数据文件,配置文件,模板文件和版本特定的资源文件等。
谨记保存于Documents/ 和 Application support/ 目录下的文件是默认备份的。可以使用[NSURL setResourceValue:forKey:error:]使用NSURLIsExcludeFromBackupKey key. 任何可以被重新下载的文件,一定不要进行备份。
将数据缓存数据保存于Library/Caches 目录下。 缓存数据是那些没用该数据,应用也可以正常运行的数据, 但如果有缓存数据,会提高应用的性能。 例如,数据库缓存文件,可以下载的内容等。 注意:系统也许会删除Caches/下的文件,来释放磁盘空间