您的位置:首页 > 移动开发 > IOS开发

ios 路径 目录 学习知识总结

2012-04-04 19:08 369 查看
// 获取程序Documents目录路径
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

// 获取程序app文件所在目录路径
NSHomeDirectory();

// 获取程序tmp目录路径
NSTemporaryDirectory();

// 获取程序应用包路径
[[NSBundle mainBundle] resourcePath];

[[NSBundle mainBundle] pathForResource: @"info" ofType: @"txt"];

复制代码

另外对于文件一些主要操作主要是通过NSFileManage 来完成,可以通过 [NSFileManger defaultManger] 得到它得实例。

如:创建目录、重命名文件、获取目录下的文件名、删除文件、删除目录等。

其他:

在使用的时候我准备向NSHomeDirectory()获取到的目录中写一个 文件但是失败了。

后来写到Documents目录中了,不知道是iOS的限制还是什么,文件不能写到NSHomeDirectory()目录下。

//此部分转载自 http://www.cnblogs.com/kaixuan/archive/2011/05/31/2064796.html kuanxuan

 


终极ios学习笔记1.0.2-ios无法加载项目内资源文件

     做软件,游戏啥得,免不了很多资源,图片啊,音乐啊,自定义文件啊,很多!

     是不是有时候会遇到怪问题,资源文件明明在项目下面,路径也是对得,也转化为相对路径了,看了又看就是不知道为什么,加载得文件对象总是空得。

     首先,得到你得NSBundle资源路径

  [[NSBundle mainBundle]resourcePath]

  这个方法可以得到,不管你用什么方法把他复制出来,然后用Finder得“前往文件夹”功能,到达那个指定路径,如果编译运行正常,你应该看到有一个叫“xxx.app”得文件

你猜对了,这就是我们要找得东西,点右键->显示包内容,


ios相对路径与绝对路径的转化NSBundle

  iOS程序有固定的文件访问限制,只能在自己的沙盒内。

  UIImage *img=[UIImage imageNamed:@"cellicon.png"];

  这段代码从相对路径加载了一个png图片资源作为UIImage对象,没有任何问题。因为它在内部已经偷偷得帮你把路径转化为相对路径了,你还不知道吧!

  接下来,如果要加载一些自定义格式的文件或者数据,就会出现相对路径和绝对路径的问题。比如

  NSFileHandle *fileHandle=[NSFileHandle fileHandleForReadingAtPath:newPath];

  newPath为一个字符串路径,这里的路径你却不能像上面那样

  NSFileHandle *fileHandle=[NSFileHandle fileHandleForReadingAtPath:@"test.txt"];

  这样系统是找不到文件的,因为这里需要的是文件的绝对路径,而@“test.txt”完全是无效的。

  这个时候就需要NSBundle的帮忙了,这个类专门用来负责路径转化等等功能那。大家都知道ios项目虽然在xcode下可以创建文件夹结构,但是实际上它是没有文件结构概念的,所以此时假如要加载放在项目目录下的test.txt文件,完整的代码应该是这样

方法1:

  NSString *newPath=[NSString stringWithFormat:@"%@%@%@",[[NSBundle mainBundle]resourcePath],@"/",path];

  NSLog(@"url=%@",newPath);

  NSFileHandle *fileHandle=[NSFileHandle fileHandleForReadingAtPath:newPath];

此处[NSBundle mainBundle]是获得NSBundle的一个单例对象,次单例对象 已经设置了默认的resourcePath,也就是你的app打包后的路径,[NSBundle mainBundle]resourcePath]就是获得这个完整的打包后的app路径,但你的test.txt文件并不在这个目录,而是在app内部,这时就需要拼接路径字符串,[NSString stringWithFormat:@"%@%@%@",[[NSBundle mainBundle]resourcePath],@"/",path];这么简单的字符串拼接,我就不多说了,

控制台输出app路径resourcePath:

/Users/zouzouyanghong/Library/Application Support/iPhone Simulator/5.0/Applications/76116A6A-572D-43AE-AE78-17D7A88DCAFC/JFitnessProduct.app

控制台输出拼接后完整文件绝对路径:

/Users/zouzouyanghong/Library/Application Support/iPhone Simulator/5.0/Applications/76116A6A-572D-43AE-AE78-17D7A88DCAFC/JFitnessProduct.app/test.jat

方法2:

  NSString *newPath=[[NSBundle mainBundle] pathForResource:@"test" ofType:@"txt"];

  NSFileHandle *fileHandle=[NSFileHandle fileHandleForReadingAtPath:newPath];

[[NSBundle mainBundle] pathForResource:@"test" ofType:@"jat"];前面的就不再介绍了,pathForResource方法有两个参数,前面这个为文件名,后面那个ofType就是文件类型,也就是文件后缀。这里把文件名和后缀分开了,如果这是你得到的是一个完整的文件名如:@“test.txt”,那么你得自己想办法把文件名和后缀分开了。

要特别说明,此处的文件后缀是不需要“.”的,如果写成@“.jat”是错误的,加载文件会失败。

以上部分转自 http://blog.csdn.net/zi2xuan/article/details/7319210 zi2xuan
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios xcode path 音乐 游戏 url
相关文章推荐