本文主要是介绍Objective-c NSFileManager类和NSFileHandle类的使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
NSFileManager* fm = [NSFileManager defaultManager];//判断一个文件是否存在,返回一个BOOL值
if([fm fileExistsAtPath:@"/tmp/AddressCard.m"])
{
NSLog(@"exist");
}
else
{
NSLog(@"not exist");
}
//将文件中的内容写入到缓冲区中, 返回一个NSData对象
NSData* data = [NSData dataWithContentsOfFile:@"/tmp/AddressCard.m"];
//将缓冲区中的内容写入到新文件中,返回一个BOOL值
if([data writeToFile:@"/tmp/addressCard.txt" atomically:YES])
{
NSLog(@"Write Successful");
}
else
{
NSLog(@"Write failed");
}
//获取文件的属性,保存到字典中
NSError* error = nil;
NSDictionary* attributesDic = [fm attributesOfItemAtPath:@"/tmp/AddressCard.m" error:&error];
NSLog(@" %@",attributesDic);
//查看字典中某个属性的值
NSLog(@" %@",[attributesDic objectForKey:@"NSFileHFSCreatorCode"]);
//将文件中的内容保存到缓冲区中,与NSData类中的dataWithContentsOfFile:方法类似
NSData* data2 = [fm contentsAtPath:@"/tmp/AddressCard.m"];
//创建一个文件,内容为缓冲区中的内容,属性为默认值 返回值为BOOL值
[fm createFileAtPath:@"/tmp/a.txt" contents:data2 attributes:nil];
if([fm fileExistsAtPath:@"/tmp/a.txt"])
{
NSLog(@"create succeed");
}
else
{
NSLog(@"create failed");
}
NSString* str = [NSString stringWithContentsOfFile:@"/tmp/AddressCard.m" encoding:NSUTF8StringEncoding error:nil];
NSLog(@" %@",str);
NSString* pathStr = @"/tmp/Address.txt";
NSLog(@" %@",[pathStr pathComponents]);//返回路径的组成部分,保存在NSArray中,“/”根目录和文件需要加引号,目录不需要
NSLog(@" %@",[pathStr pathExtension]);//返回文件的扩展名 txt
NSLog(@" %@",[pathStr lastPathComponent]);//返回目录的最后一个组成部分 Address.txt
//下面两种方法构建绝对路径
NSString* debugStr = [fm currentDirectoryPath];//返回Debug所在的目录
NSLog(@" %@",[debugStr stringByAppendingFormat:@"/abc.txt"]);//打印文件“abc.txt”所在的目录
NSLog(@" %@",[debugStr stringByAppendingPathComponent:@"abc.txt"]);//与上个方法不同的是,上面需要加“/”,而这个不需要
//把一个文件中的内容写入到另一个文件中
NSFileHandle* handleR = [NSFileHandle fileHandleForReadingAtPath:@"/tmp/AddressCard.m"];//打开并读取文件
if(![fm fileExistsAtPath:@"/tmp/addresscard.m"])//判断要写入的文件是否存在,不存在则创建
{
[fm createFileAtPath:@"/tmp/addresscard.m" contents:nil attributes:nil];
}
NSFileHandle* handleW = [NSFileHandle fileHandleForWritingAtPath:@"/tmp/addresscard.m"];//打开并写入文件
//开始进行读写操作
NSData* data3 = nil;//NSData是不可变的,是指data3所指向的区域的内容不可以发生变化,但是data3的指向可以发生变化
while([(data3 = [handleR readDataOfLength:100]) length] > 0)
{
[handleW writeData:data3];//边读边写
}
if([fm contentsEqualAtPath:@"/tmp/AddressCard.m" andPath:@"/tmp/addresscard.m"])//判断两个文件的内容是否相同
{
NSLog(@"contents equal");
}
else
{
NSLog(@"not equal");
}
[handleR closeFile];
[handleW closeFile];
这篇关于Objective-c NSFileManager类和NSFileHandle类的使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!