分享来的文档存在沙盒的Documents/Inbox路径下:
/var/mobile/Containers/Data/Application/151DF2B1-576C-42B5-8F5D-051132FF2494/Documents/Inbox/%3F%3F%20Microsoft%20Word%20%3F%3F%20(2)-1.docx这个文件
这个文件是存在的,但是用我想计算文档大小,用如下方法
NSFileManager *fileManager = [NSFileManager defaultManager];
if([fileManagerfileExistsAtPath:localPath]) {
size = [[fileManagerattributesOfItemAtPath:localPath error:nil] fileSize];
}总是返回NO,文件不存在
Application/ 后面那一串,应用每次运行都会变的..........................................................
------解决办法
iOS的app都是沙盒,只能访问自己app下的目录。你的app这一串151DF2B1-576C-42B5-8F5D-051132FF2494是会发生变化的。所以要通过相对路径获取。参考代码如下:
获取Documents目录
NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
// 这个documentDirectory就是你的/var/mobile/Containers/Data/Application/151DF2B1-576C-42B5-8F5D-051132FF2494/Documents/目录了
NSString *documentDirectory = [pathArray firstObject];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *localPath = [documentDirectory stringByAppendingPathComponent:@"/Inbox/%3F%3F%20Microsoft%20Word%20%3F%3F%20(2)-1.docx"];
if([fileManager fileExistsAtPath:localPath]) {
size = [[fileManager attributesOfItemAtPath:localPath error:nil] fileSize];
}
----------------------------------------------------------------------------------------------------------
//目录结构:
------AppName.app
------Documents
------Library
----------Caches
----------Preferences
------tmp
------
Documents: 用于存储用户数据或其它应该定期备份的信息
Preferences : 应用程序的偏好设置文件
Caches : 保存应用程序再次启动过程中需要的信息。您的应用程序通常需要负责添加和删除这些文件,
但在对设备进行完全恢复的过程中,iTunes会删除这些文件
tmp : 存放临时文件,保存应用程序再次启动过程中不需要的信息
获取各个 路径
-----------Documents :
NSString* documentsDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSLog(@"documentsDirectory----%@\n\n",documentsDirectory);
或者NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);NSString *documentsDirectory1 = [paths objectAtIndex:0];
----------Library
NSString* LibraryDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Library"];
或者NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask, YES);
NSString *LibraryDirectory1 = [paths objectAtIndex:0];
-----------Cache
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES);NSString *documentsDirectory1 = [paths objectAtIndex:0];
----------test.app
NSString *str = [[NSBundle mainBundle] resourcePath];
NSLog(@"str---%@\n\n",str);
///你所导入的文件就放在这里,文章开头已经说了如何获取其路径
----------获取 根目录
NSHomeDirectory();