菜单

Objective-C 文件操作

2012年08月29日 - objective-c

常见的NSFileManger文件方法:
1.-(BOOL) contentsAtpath:path
从一个文件中读取数据

2.-(BOOL) createFileAtPath:path contents:(BOOL)data attributes:attr
向一个文件中写入数据

3.-(BOOL)removeFileAtPath:path handler;handler
删除一个文件

4.-(BOOL)movePath:from toPath:to handler:handler
重命名或者移动一个文件

5.-(BOOL)copyPath:from toPath:to handler:handler
比较这两个文件的内容

6.-(BOOL)fileExistsAtPath:path
测试文件是否存在

7.-(BOOL)isReadableFileAthPath:path
测试文件是否存在,并且是否能执行读操作

8.-(BOOL)isWritableFileAtPath:path
测试文件是否存在,并且是否能执行写操作

9.-(NSDictionary *)fileAttributesAtPath:path traverseLink:(BOOL)flag
获取文件的属性

10.-(BOOL)changeFileAttributes:attr atPath:path
更改文件属性

创建与删除:
//创建文件管理器
NSFileManager *fileManager = [NSFileManager defaultManager];
//获取路径
//参数NSDocumentDirectory要获取那种路径
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

//更改到待操作的目录下
[fileManager changeCurrentDirectoryPath:[documentsDirectory stringByExpandingTildeInPath]];

//创建文件fileName文件名称,contents文件的内容,如果开始没有内容可以设置为nil,attributes文件的属性,初始为nil
[fileManager createFileAtPath:@”fileName” contents:nil attributes:nil];

//删除待删除的文件
[fileManager removeItemAtPath:@”createdNewFile” error:nil];

写入数据:
//获取文件路径
NSString *path = [documentsDirectory stringByAppendingPathComponent:@”fileName”];

//待写入的数据
NSString *temp = @”Welcome to blog.iosxcode4.com”;
int data0 = 100000;
float data1 = 23.45f;

//创建数据缓冲
NSMutableData *writer = [[NSMutableData alloc] init];

//将字符串添加到缓冲中
[writer appendData:[temp dataUsingEncoding:NSUTF8StringEncoding]];

//将其他数据添加到缓冲中
[writer appendBytes:&data0 length:sizeof(data0)];
[writer appendBytes:&data1 length:sizeof(data1)];

//将缓冲的数据写入到文件中
[writer writeToFile:path atomically:YES];
[writer release];

读取数据:
int gData0;
float gData1;
NSString *gData2;

NSData *reader = [NSData dataWithContentsOfFile:path];
gData2 = [[NSString alloc] initWithData:[reader subdataWithRange:NSMakeRange(0, [temp length])]
encoding:NSUTF8StringEncoding];
[reader getBytes:&gData0 range:NSMakeRange([temp length], sizeof(gData0))];
[reader getBytes:&gData2 range:NSMakeRange([temp length] + sizeof(gData0), sizeof(gData1))];

NSLog(@”gData0:%@  gData1:%i gData2:%f”, gData0, gData1, gData2);

 

————————————————————————–

cocoa 文件操作

打开查看文件
NSOpenPanel *openPanel=[NSOpenPanel openPanel];
[openPanel setTitle:@”Choose a File or Folder”];//setTitle为NSWindow的方法,它是openPanel 的父类
[openPanel setCanChooseDirectories:YES];//默认不可以选文件夹,可选任何格式文件
NSInteger i=[openPanel runModal];//显示openPanel
if(i==NSOKButton){
NSString *theFilePath=[openPanel fileName];
//给outlets(filePathDisplay)赋值:[filePathDisplay setStringValue:theFilePath]
NSFileManager *theManager=[NSFileManage defaultManager];
NSString *theFileName=[theManage displayNameAtPath:theFilePath];
if([theManager fileExistsAtPath:theFilePath]){
//文件存在
}
if( [theManager fileExistsAtPath:theFilePath isDirectory:&isFolder] ){
//表示选中的是一个目录(文件夹)
}
NSDictionary *theFileAttributes=[theManager fileAttributesAtPath:theFilePath traverseLink:YES];
//NSDictionary是一个数据结构,其中包括:文件大小,创建日期,修改日期
//由于只是读数据,则不用可变的NSMutableDictionary
NSNumber *theFileSize=[theFileAttributes objectForKey:NSFileSize];
NSDate *theModificationDate=[theFileAttributes objectForKey:NSFileModificationDate];
NSDate *theCreationDate=[theFileAttributes objectForKey:NSFileCreationDate];

//查看文件图标(要先用NSFileWrapper把文件数据放入内存)
NSFileWrapper *theFileWrapper=[[NSFileWrapper alloc] initWithPath:theFilePath] autorelease];
NSImage *theIcon=[theFileWrapper icon];
//fileIconDisplay为Interface上的NSImageView对象(Library中的Image well)
[fileIconDisplay setImageScaling:NSScaleToFit];
[fileIconDisplay setImage:theIcon];
}
可以实现对对文档(Text),图片,以及多媒体文件的操作
复制文件
NSString *theDestination=[[NSHomeDirectory() //NSHomeDirectory是Foundation的方法
stringByAppendingPathComponent:@”Desktop”] //文件保存的目录
stringByAppendingPathComponent:theFileName];
[theManager copyPath:theFilePath toPath:theDestination handler:nil];
移动(剪切)文件
[theManager movePath:theFilePath toPath:theDestination handler:nil];
删除文件
NSInteger n=NSRunAlertPanel(
[NSLocalizedString(@”Are you sure you want to delete the file?”,nil),
[NSLocalizedString(@”You cannot undo this deletion.”,nil),
[NSLocalizedString(@”Yes”,nil),
[NSLocalizedString(@”No”,nil),
nil);
if(n==NSAlertDefaultReturn){
[theManager removeFileAtPath:theFilePath handler:nil];
}
创建文件夹
NSString *theDestination=[[NSHomeDirectory()
stringByAppendingPathComponent:@”Desktop”]
stringByAppendingPathComponent:@”MyNewFolder”];
[theManager createDirectoryAtpath:theDestination
attributes:nil]; //第二个参数设置文件夹的属性

发表评论

电子邮件地址不会被公开。 必填项已用*标注