iOS中文件操作(NSFileManager)相对路径

分享来的文档存在沙盒的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();

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容