通过NSHomeDrietory获取文件路径
NSString*homeD=NSHomeDrietory();//获取Home路径
NSString*fileD=[homeDstringByAppendingPathComponent:@"temp/xxx.xxx"];
这样可以获取xxx的完整路径了
_________________________________________________________________________________________________
使用NSSearchPathForDirectoriesInDomains获取指定路径
NSArray*paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString*documentsDirectory=[pathsobjectAtIndex:0];需要的路径
NSString*fileD=[documentSDirectorystringByAppendingPathComponent:@"xxx.txt"];
________________________________________________________________________________________________
NSSearchPathForDirectoriesInDomains具体检索一个子文件夹
NSDocumentDirectory这个是个常量根类中的枚举变量吧,代表要查找的路径document
也可以使用NSCachesDirectory书名路径为Caches
NSUserDomainMask这个指定了文件的检索范围只在沙箱内部
最后YES指定了是否展开波浪线;在MAC系统中~代表主路径(Home)如果不展开路径就如~/Document如果展开就是完整的路径一般都设为YES
_________________________________________________________________________________________________
使用NSTemportryDirectory获取临时文件的全路径
NSString*temD=NSTemportryDirectory();
NSString*fileD=[temDstringByAppendingPathComponent:@"xxx.txt"];
NSLog(@"%@",temD);
创建新文件
-(BOOL)createFileAtPath:(NSString*)pathcontents:(NSData*)dataattributes:(NSDictionary*)attr;
要创建文件夹第一个参数就是他的全路径了,第二个是文件的内容,最后一个文件的属性
返回值为创建成功与失败
创建路径
-(Void)createDirectoryAtPath:(NSString*)pathattributes:(NSDictionary)attr;
创建路径跟文件差不多
删除文件
-(BOOL)removeFileAtPath:(NSString*)pathhandler:(id)handler;
调用删除文件的函数需要指定全路径并且制定handler来执行flieManager:willProcessPath和fileManager:shouldProceedAfterError回调函数也可以吧handler置为nil这样删除文件出错的时候会终止操作并返回NO
写入数据:
//获取文件路径
NSString*path=[documentsDirectorystringByAppendingPathComponent:@"fileName"];
NSString*temp=@"Helloworld";
inta=1;
//创建数据缓冲
NSMutableData*writer=[[NSMutableDataalloc]init];
//将字符串添加到缓冲中
[writerappendData:[tempdataUsingEncoding:NSUTF8StringEncoding]];
//将其他数据添加到缓冲中
[writerappendBytes:&alength:sizeof(a)];
//将缓冲的数据写入到文件中
[writerwriteToFile:pathatomically:YES];
[writerrelease];
读取数据:
inta;
Floatb;
NSString*str;
NSData*reader=[NSDatadataWithContentsOfFile:path];
str=[[NSStringalloc]initWithData:[readersubdataWithRange:NSMakeRange(0,[templength])]
encoding:NSUTF8StringEncoding];
[readergetBytes:&arange:NSMakeRange([templength],sizeof(a)];
[readergetBytes:&strrange:NSMakeRange([templength]+sizeof(a),sizeof(b))];
NSLog(@"a:%@b:%istr:%f",a,b,str);
读取工程中的文件:
读取数据时,要看待读取的文件原有的文件格式,是字节码还是文本,我经常需要重文件中读取字节码,所以我写的是读取字节文件的方式。
//用于存放数据的变量,因为是字节,所以是UInt8
UInt8b=0;
//获取文件路径
NSString*path=[[NSBundlemainBundle]pathForResource:@"fileName"ofType:@""];
//获取数据
NSData*reader=[NSDatadataWithContentsOfFile:path];
//获取字节的个数
intlength=[readerlength];
NSLog(@"------->bytesLength:%d",length);
for(inti=0;i<length;i++)
{
//读取数据
[readergetBytes:&brange:NSMakeRange(i,sizeof(b))];
NSLog(@"-------->data%d:%d",i,b);
}
实例
@implementationManagerFile
-(void)writeFile:(NSString*)file{
//创建文件管理器
NSFileManager*fileManager=[NSFileManagerdefaultManager];
//获取路径
//参数NSDocumentDirectory要获取那种路径
NSArray*paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString*documentsDirectory=[pathsobjectAtIndex:0];//去处需要的路径
//更改到待操作的目录下
[fileManagerchangeCurrentDirectoryPath:[documentsDirectorystringByExpandingTildeInPath]];
//创建文件fileName文件名称,contents文件的内容,如果开始没有内容可以设置为nil,attributes文件的属性,初始为nil
//获取文件路径
[fileManagerremoveItemAtPath:@"username"error:nil];
NSString*path=[documentsDirectorystringByAppendingPathComponent:@"username"];
//创建数据缓冲NSMutableData*writer=[[NSMutableDataalloc]init];
//将字符串添加到缓冲中
[writerappendData:[filedataUsingEncoding:NSUTF8StringEncoding]];
//将其他数据添加到缓冲中
//将缓冲的数据写入到文件中
[writerwriteToFile:pathatomically:YES];
[writerrelease];
}
-(NSString*)readFile{
//创建文件管理器
NSFileManager*fileManager=[NSFileManagerdefaultManager];
//获取路径
//参数NSDocumentDirectory要获取那种路径
NSArray*paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString*documentsDirectory=[pathsobjectAtIndex:0];//去处需要的路径
//更改到待操作的目录下
[fileManagerchangeCurrentDirectoryPath:[documentsDirectorystringByExpandingTildeInPath]];
//获取文件路径
NSString*path=[documentsDirectorystringByAppendingPathComponent:@"username"];
NSData*reader=[NSDatadataWithContentsOfFile:path];
return[[NSStringalloc]initWithData:readerencoding:NSUTF8StringEncoding];
}
@end
对一个文件重命名
想要重命名一个文件,我们需要把文件移到一个新的路径下。下面的代码创建了我们所期望的目标文件的路径,然后请求移动文件以及在移动之后显示文件目录。
//通过移动该文件对文件重命名
NSString*filePath2=[documentsDirectory
stringByAppendingPathComponent:@"file2.txt"];
//判断是否移动
if([fileMgrmoveItemAtPath:filePathtoPath:filePath2error:&error]!=YES)
NSLog(@"Unabletomovefile:%@",[errorlocalizedDescription]);
//显示文件目录的内容
NSLog(@"Documentsdirectory:%@",
[fileMgrcontentsOfDirectoryAtPath:documentsDirectoryerror:&error]);
__________________________________________________________________________________
获取一个目录内的文件及文件夹列表。
NSFileManager*fileManager=[NSFileManagerdefaultManager];
//在这里获取应用程序Documents文件夹里的文件及文件夹列表
NSArray*documentPaths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString*documentDir=[documentPathsobjectAtIndex:0];
NSError*error=nil;
NSArray*fileList=[[NSArrayalloc]init];
//fileList便是包含有该文件夹下所有文件的文件名及文件夹名的数组
fileList=[fileManagercontentsOfDirectoryAtPath:documentDirerror:&error];
以下这段代码则可以列出给定一个文件夹里的所有子文件夹名
NSMutableArray*dirArray=[[NSMutableArrayalloc]init];
BOOLisDir=NO;
//在上面那段程序中获得的fileList中列出文件夹名
for(NSString*fileinfileList){
NSString*path=[documentDirstringByAppendingPathComponent:file];
[fileManagerfileExistsAtPath:pathisDirectory:(&isDir)];
if(isDir){
[dirArrayaddObject:file];
}
isDir=NO;
}
NSLog(@"EveryThinginthedir:%@",fileList);
NSLog(@"Allfolders:%@",dirArray);