iOS 关于文件的操作
最近做东西,遇到了使用文件方面的问题,花了点时间把文件研究了一下!
一 关于文件路径的生成
我用的方法是:
-(NSString*)dataFilePath
{
NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);
NSString * documentsDirectory = [paths objectAtIndex:0];
NSLog(@"—0——%@",documentsDirectory);
return [documentsDirectory stringByAppendingPathComponent:@"cataog.db”];
}
但是NSDocumentDirectory是指程序中对应的Documents 路径,
NSDocumentationDiretory是对应于程序中的Library/Documentation 路径 ,这个路径是没有读写权限的,所以即使自己所查找的文件不存在,也看不到文件的自动生成!
所以以上应改为:
-(NSString*)dataFilePath
{
NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString * documentsDirectory = [paths objectAtIndex:0];
NSString *path =[documentsDirectory stringByAppendingPathComponent:@"cataog.db"];
NSLog(@"*****%@",path);
return path;
}
这样的话就可以了!
下面讨论一下对文件的操作:
对文件的操作,核心函数是:NSSearchPathForDirectoriesInDomains
iOS 看开发是在沙盒中开发的,对一些部分的文件的读写进行了限制,只能在几个目录下读写文件:
(1)Documents :应用中用户数据可以存放在这里,iTunes的数据备份和恢复的时候会包括此目录
(2)tmp:存放临时文件的,iTunes不会备份和恢复此目录,此目录下文件可能会在应用退出后删除
(3)Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会再应用退出删除对于文件的操作
二 利用NSSearchPathForDirectoriesInDomains 建立文件,并可以向内写入数据
NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString * documentsDirectory = [paths objectAtIndex:0];
NSString *content=@"write data into myFile”;
NSData *contentData=[content dataUsingEncoding:NSASCIIStringEncoding];
if ([contentData writeToFile:fileName atomically:YES]) {
NSLog(@">>write ok.");
}
如果要想文件内写入文字的话,需要改变编码方式:
NSString *contentChinese=@"写入汉字信息到文件”;
NSData *contentChineseData=[contentChinese dataUsingEncoding:NSUnicodeStringEncoding];
if ([contentData writeToFile:fileName atomically:YES]) {
NSLog(@">>写入成功.");
}
如果要指定其他文件目录,比如Caches目录,需要更换目录常量为:NSCachesDirectory
为大家列出:
常量 目录
NSDocumentDirectory <Application_Home>/Documents
NSCachesDirectory <Application_Home>/Library/Caches NSApplicationSupportDirectory <Application_Home>/Library/ApplicationSupport
三 另外我们在开发中也需要用到一些资源文件:
NSString *Path = [[NSBundle mainBundle]
pathForResource:@"f"
ofType:@"txt"];
NSString *Content=[NSString stringWithContentsOfFile:Path encoding:NSUTF8StringEncoding error:nil];
NSLog(@" path: %@ \nfile content:%@",Path,Content);
iOS 关于文件的操作的更多相关文章
- ios 简单的plist文件读写操作(Document和NSUserDefaults)
最近遇到ios上文件读写操作的有关知识,记录下来,以便以后查阅,同时分享与大家. 一,简单介绍一下常用的plist文件. 全名是:Property List,属性列表文件,它是一种用来存储串行化后的对 ...
- OC中文件的操作
OC中文件操作,在之前的文章中,已经接触到了文件的创建了,但是那不是很具体和详细,这篇文章我们就来仔细看一下OC中是如何操作文件的: 第一.首先来看一下本身NSString类给我们提供了哪些可以操作文 ...
- OC学习篇之---文件的操作
今天我们来介绍OC中文件操作,在之前的文章中,已经接触到了文件的创建了,但是那不是很具体和详细,这篇文章我们就来仔细看一下OC中是如何操作文件的: 第一.首先来看一下本身NSString类给我们提供了 ...
- iOS开发——Swift篇&文件,文件夹操作
文件,文件夹操作 ios开发经常会遇到读文件,写文件等,对文件和文件夹的操作,这时就可以使用NSFileManager,NSFileHandle等类来实现. 下面总结了各种常用的操作: 1,遍 ...
- iOS开发-文件操作
目录操作和文件管理 学习目标 1.理解单例 2.掌握NSFileManager类常用的文件管理操 3.掌握NSFileHandle类常用的文件数据操作 4.了解NSData类的常用操作 5.掌握Pli ...
- iOS sqlite 的各种操作
iOS --SQL的增加.删除.查找.修改 iOS对于数据库的操作:增加.删除.查找.修改 首先需要创建一个数据库:本程序的数据库是在火狐浏览器里的插件里写的微量型数据库 火狐找查找SQLite Ma ...
- iOS应用文件夹
IOS5多了一个比较重要的功能iCloud,但是同时也出现一个问题,很多的APP都把很大量的数据存在APP底下的Documents(/Documents )文件夹里面,这样苹果会reject掉你的AP ...
- c++ ofstream & ifstream文件流操作
ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间; //ofstream & ifstream inherit from istream class ...
- iOS: Crash文件解析(一)
iOS Crash文件的解析(一) 开发程序的过程中不管我们已经如何小心,总是会在不经意间遇到程序闪退.脑补一下当你在一群人面前自信的拿着你的App做功能预演的时候,流畅的操作被无情地Crash打断. ...
随机推荐
- 【开发技术】eclipse中格式化代码快捷键Ctrl+Shift+F失效的解决办法
要格式化代码的时候,右键-source-format能够起效,但ctrl+shift+f不好使了. 原来是和“简繁体快捷键”冲突了.输入法中的这个快捷键我们一般不用,小勾勾去掉就成了. eclipse ...
- SpringMVC图片上传与显示
@RestController @Scope("prototype") @RequestMapping("/xxxx/xxx/main") public cla ...
- ajax和跨域
一.简介 ajax是什么? AJAX(Asynchronous JavaScript and XML) 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. AJAX, (异步的JavaSc ...
- 堡垒机之paramiko模块
一.paramiko简单介绍 场景预设: 很多运维人员平时进行维护linux/unix主机时候,无非通过ssh到相应主机操作,那么一旦主机有成千上百台,那该如何应对,这时候我们需要批处理工具,基于py ...
- Unix/Linux命令:SED
在Unix/Linux系统中,sed命令采用逐行处理的方式对文件进行查找.删除.替换.添加.插入等操作. 语法:sed [OPTION]... {script-only-if-no-other-scr ...
- Activity内切换fragment实现底部菜单切换遇到的坑
1.一般说来,app底部导航都会设计为5个菜单,可以使用textView,也可使用radioButton,这里我选择用radioButton,给radioButton直接设置selector就可以实现 ...
- C# 处理Word自动生成报告 三、设计模板
C# 处理Word自动生成报告 一.概述 C# 处理Word自动生成报告 二.数据源例子 C# 处理Word自动生成报告 三.设计模板 C# 处理Word自动生成报告 四.程序处理 既然是模板就少不了 ...
- 2017-07-04(sudo wc sort)
sudo 作用 root把本来只能超级用户执行的命令,赋予普通用户执行. 添加 运行visudo命令,在文件底部添加信息即可! sudo -l 查看用户可以运行的命令 use1 ALL=(ALL) ...
- linux下建ftp用户,并限制用户访问路径[转]
目的是:在linux系统上建立ftp用户,并限制其通过ftp访问时,只能访问用户主目录:其主目录显示路径也是“/”,看不到上级目录. 例如,我要建立用户usertest,密码为usertest ...
- 关于手残,搞废我的OLED屏幕的 追悼会
2017-12-1913:36:41 昨天按照B站的资料利用esp12F做了一个天气站,可预报天气,惭愧的是模型做好了,照片还没拍就夭折了,可怜了我20块的屏幕,我心伤悲,莫知我哀呀! 本来调试已经成 ...