oc 沙盒目录定位与文件操作 (1)

来源:互联网 发布:js中的split方法 编辑:程序博客网 时间:2024/06/08 10:38

july 7,30  


1.NSString
获取沙盒的主目录
NSString *homePath=NSHomeDirectory();


2.获取沙盒下的目录

Documents目录
 (1)NSString *documents=[homePath stringByAppendingPathComponent:@"Documents"];

(2)(要重点记住这个搜索方法,今天白天没练习的)

  1.  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
  2. /* 
  3.  NSString *storePath = [documentsDirectory stringByAppendingPathComponent:@"Data.txt"]; 
  4.     NSURL *storeURL = [NSURL fileURLWithPath:storePath] 
  5. */  

tmp 目录

NSString *temporary =NSTemporaryDirectory();

    NSLog(@"____%@",temporary);

资源文件目录(readonly 不可写文件进去)

NSBundle *app = [NSBundlemainBundle];

library目录

 NSArray *lib =NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES);





3.获取路径的组成部分
[path pathComponents];
路径的最后一个组成部分
[path lastPathComponent];
追加文件或目录  这个经常用开头不要加斜杠
[path stringByAppendingPathComponent:@"app.text"];
删除最后部分的组成部分
[path stringByDeletingLastPathComponent];
取路径最后部分的扩展名
[path pathExtension];
[path stringByAppendingPathExtension:@"jpg"];


==================================================


4.NSFileManager主要对文件进行管理,主要有如下功能
NSFileManager *fileManager=[NSFileManager defaultManager];
创建      复制     删除     剪贴
create   copy    remove   move
createFileAtPath 创建文件
createDirectoryAtPath  创建文件夹
读取 contentsAtPath
文件是否存在 fileExistsAtPath


5.删除文件
bool isExist=[fm fileExistsAtPath:path];
if(isExist)
{
bool success=[fm removeItemAtPath:path error:nil];
if(success)
{
NSLog(@"remove success!");
}
}


6.获取文件大小
NSDictionary *attrDic=[fileManager attributesOfItemAtPath:path error:nil];
NSNumber *fileSize=[attrDic objectForKey:NSFileSize];
NSInteger *p=[fileSize intValue];


7.数组、字典、字符串、NSData都是容纳数据的,他们都有一个writeToFile方法,将数据写入文件
NSString *s1=@"1424";
NSString *s2=@"student"
NSArray *array=[NSArray arrayWithObjects:s1,s2,nil];
[array writeToFile:path atomically:YES];


8.数组读文件
NSArray *array=[[NSArray alloc]initWithContentsOfFile:path];
NSArray *array=[NSArray arrayWithContentsOfFile;path];


=============================================================


9.NSFileHandle
创建:
NSFileHandle fileHandle=[NSFileHandle fileHandleForReadingAtPath:path];
只读操作
writing
只写操作
updating
可读可写


10.读取文件全部数据
availableData
写入数据
writeData


11.offsetInFile   获取当前文件的偏移量
seekToFileOffset  跳到指定文件的偏移量
seekToEndOfFile 使偏移量跳到文件末尾
readDataToEndOfFile  从当前偏移量读取到文件末尾
readDataOfLength从当前偏移量开始读取指定的长度数据


12.数据的转换
NSString 转换成NSData
NSData *stringData=[str dataUsingEncoding:NSUTF8StringEncoding];


NSData 转换成 NSString
[fileHandle seekToFileOffset:0];
NSData *data2=[fileHandle availableData];
NSString *string2=[[NSString alloc]initWithData:data2 encoding:NSUTF8StringEncoding];


13.获取目录下文件总大小
NSArray *pathArray=[fileManager subpathAtPath:path];
long sum;
for(NSString *subPath in pathArray)
{
NSString *paths=[path stringByAppendingPathComponent:subPath];
NSDictionary *attrDic=[fileManager attributesOfItemAtPath:paths error:nil];
NSNumber *fileSize=[attrDic objectForKey:NSFileSize];
sum+=[fileSize intValue];
}


14.数组只能将如下数据类型写入文件,如果包含其他对象,将写入失败
   数组、字典写入的文件叫属性列表(plist)文件,可以用xcode打开编辑


注意事项:
(1)、删除、读取或写入,都需要用NSFileManager 用create方法进行路径或文件的创建
    而剪贴或复制则不需要
(2)、牢记写入时,如果当前位置有内容,则新内容会覆盖当前的内容
(3)、NSFileManager主要进行文件的删除、剪贴、复制  而NSFileHandle主要进行文件的读写
(4)、文件进行删除复制或者剪贴操作时,下次操作时记得重新定义操作句柄
(4)、NSFileHandle主要是能在文件内定位
(5)、使用NSFileHandle记得关闭  [fileHandle closeFile];

(6)、牢记当前的指针 记得fileHandle的时效型

(7)、—安装目录(homeDirectory),r    NSHomeDiectory();

---documents:长期存放用户文件(夹)rw
---tmp : 存放临时文件 rw    NSTemporaryDirectory()
---.app :(mainBundle)存放可执行文件和资源文件    r      NSSearchPathForDirectoriesInDomains()
---library :--caches:存放缓存文件  rw   获取路径方法:[NSBundle mainBundle]

0 0
原创粉丝点击