Objective-C: NSFileManager 的使用

在Objective-C 中的 Foundation 框架中,文件操作是由NSFileManager 类来实现的。

下面通过例子来说明如何创建一个文件,并向文件中写内容,以及如何读出文件中的内容:

- (void)testFileCreate
{
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
    filePath = [filePath stringByAppendingPathComponent:@"new.txt"];
    NSLog(@"filePath = %@",filePath);
    // 判断文件是否存在
    if (![fileManager fileExistsAtPath:filePath]){
        // 若文件不存在,则新建文件
        [fileManager createFileAtPath:filePath contents:nil attributes:nil];
    }
    // 向文件中写内容,通过文件句柄,NSFileHandle实现
    NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingAtPath:filePath];
    NSString *content = @"hey,brother.This is a test.";
    NSData *contentData = [content dataUsingEncoding:NSUTF8StringEncoding];
    [fileHandle writeData:contentData];
    // 关闭文件
    [fileHandle closeFile];

    // 读取文件中的内容
    fileHandle = [NSFileHandle fileHandleForReadingAtPath:filePath];
    NSData *readData = [fileHandle readDataToEndOfFile];
    // data 转 NSString
    NSString *readStr = [[NSString alloc] initWithData:readData encoding:NSUTF8StringEncoding];
    NSLog(@"readStr = %@",readStr);
    [fileHandle closeFile];
    // 直接以NSString 的方式读取文件
    NSString *contentStr = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"contentStr = %@",contentStr);
}

文件的一些常规操作,如复制文件、删除文件、移动文件等:

- (void)testFileOperation
{
    // 获得临时目录
    NSString *tempPath = NSTemporaryDirectory();
    NSLog(@"tempPath = %@",tempPath);
    // 最后一级目录
    NSLog(@"last = %@", [tempPath lastPathComponent] );
    // 在最后增加一级目录,原目录不变,返回一个新的目录字符串
    NSLog(@"add last = %@",[tempPath stringByAppendingPathComponent:@"add"]);
    // 删除最后一级目录,原目录不变,返回一个新的目录字符串
    NSLog(@"del last = %@",[tempPath stringByDeletingLastPathComponent]);
    NSString *filePath = [tempPath stringByAppendingPathComponent:@"test.txt"];
    NSLog(@"filePath = %@",filePath);
    // 扩展名,输出为 txt
    NSLog(@"extension = %@",[filePath pathExtension]);
    NSFileManager *manager = [NSFileManager defaultManager];
    if(![manager fileExistsAtPath:filePath]){
        [manager createFileAtPath:filePath contents:nil attributes:nil];
    }

    NSString *newPath = [tempPath stringByAppendingPathComponent:@"newtest.txt"];
    // 拷贝文件
    [manager copyItemAtPath:filePath toPath:newPath error:nil];
    if([manager fileExistsAtPath:newPath]){
        NSLog(@"copy success");
    }
    // 删除文件
    [manager removeItemAtPath:newPath error:nil];
    if(![manager fileExistsAtPath:newPath]){
        NSLog(@"remove success");
    }

    // 文件是否可读
    if([manager isReadableFileAtPath:filePath]){
        NSLog(@"readable");
    }
    // 文件是否可写
    if([manager isWritableFileAtPath:filePath]){
        NSLog(@"writeable");
    }
}
时间: 2024-08-03 00:08:08

Objective-C: NSFileManager 的使用的相关文章

Swift中的错误处理

前言 任何代码都会发生错误,这些错误有些是可以补救的,有些则只能让程序崩溃.良好的错误处理能够让你的代码健壮性提高,提高程序的稳定性. 本文的Swift版本:Swift 3 Objective C 返回nil 如果出错了,就返回空是Objective C中的一种常见的处理方式.因为在Objective C中,向nil发送消息是安全的.比如: - (instancetype)init { self = [super init]; if (self) { } //如果初始化失败,会返回nil ret

Objective C (iOS) for Qt C++ Developers(iOS开发,Qt开发人员需要了解什么?)

Qt/C++开发人员眼中的Obj-C 对于我们第一次自己定义iOS应用来说,对于来自Qt/C++开发人员来说,我不得不学习Objective-C相关语法与知识 为了让读者可以更easy理解这篇博客的内容,我将描写叙述诸多我所学到的东西.这将很多其它的是大脑转存而不是单一的教程 ,所以我仍然希望这将对你非常有帮助,我将首先写编程语言的差异,然后再写关于类库的差异 1.Objective C vs C vs C++ 类似于C++,Obj-c是C语言的一个超集(这不是100%正确的,可是一个足够好的语

iOS开发核心语言Objective C —— 全部知识点总结

本分享是面向有意向从事iOS开发的伙伴及苹果产品的发烧友,亦或是已经从事了iOS的开发人员,想进一步提升者.假设您对iOS开发有极高的兴趣,能够与我一起探讨iOS开发.一起学习,共同进步.假设您是零基础.建议您先翻阅我之前分享的iOS开发分分钟搞定C语言系列,然后在開始Objective C语言的学习,假设您遇到问题也能够与我探讨.另外将无偿分享自己整理出来的大概400G iOS学习视频及学习资料,都是干货哦.能够新浪微博私信?关注极客James,期待与您的共同学习和探讨! ! 由于时间有限,每

Objective C (iOS) for Qt C++ Developers(iOS开发,Qt开发者需要了解什么?)

Qt/C++开发者眼中的Obj-C 对于我们第一次自定义iOS应用来说,对于来自Qt/C++开发者来说,我不得不学习Objective-C相关语法与知识 为了让读者能够更容易理解这篇博客的内容,我将描述诸多我所学到的东西.这将更多的是大脑转存而不是单一的教程 ,所以我仍然希望这将对你很有帮助,我将首先写编程语言的差异,然后再写关于类库的差异 1.Objective C vs C vs C++ 类似于C++,Obj-c是C语言的一个超集(这不是100%正确的,但是一个足够好的语句来理解它),您将使

IOS中的NSData和NSFileManager例子微解

//NSData遵循NSCopying NSCoding协议,它提供面向对象的数组存储为字节 //适用与读写文件,而读写文件的时候需要一个缓冲区,而NSDate就提供了这么一个缓存区 //定义一个char类型的字符串 const char * string = "Hi there ,this is a C string"; //建立缓冲区,把字符串添加进去 NSData * data = [NSData dataWithBytes:string length:strlen(string

Objective-C

1.Objective-C语言特性 2.static __block const 3.Object-C的内存管理 4.RunLoop 5.iOS消息传递机制 6.iOS程序生命周期 7.MVC设计模式MVVM 8.UIView CALayer Frame 与bounds 9.根类 NSObject 10.多线程简介 11.数据持久化 12.JSON和XML HTML 自定义报文 13.网络编程 HTTP TCP/IP Socket  ASI AFNetwork 14.AppStore上传 及远程

ios NSFileManager和NSFileHandle(附:获取文件大小 )

转自 http://blog.csdn.net/zhibudefeng/article/details/7795946 //file 文件操作 NSFileManager 常见的NSFileManager文件的方法: -(BOOL)contentsAtPath:path                从文件中读取数据 -(BOOL)createFileAtPath:path contents:(BOOL)data attributes:attr      向一个文件写入数据 -(BOOL)rem

C++ vs Objective C

oc Short list of some of the major differences: C++ allows multiple inheritance, Objective-C doesn't.一个允许多继承,一个不允许Unlike C++, Objective-C allows method parameters to be named and the method signature includes only the names and types of the parameter

IOS中获取各个文件的目录路径的方法和NSFileManager类

转自:http://blog.sina.com.cn/s/blog_5fb39f910101di92.html IOS中获取各种文件的目录路径的方法 iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么. documents,tmp,app,Library. (NSHomeDirectory()), 手动保存的文件在documents文件里 Nsuserdefaults保存的文件在tmp文件夹里 1.Documents 目录:您应该将所有

iOS学习之文件管理器(NSFileManager)和文件对接器(NSFileHandle)

1.文件管理器(NSFileManager) 1> 创建文件夹 创建所需的方法在头文件的声明: /* createDirectoryAtPath:withIntermediateDirectories:attributes:error: creates a directory at the specified path. If you pass 'NO' for createIntermediates, the directory must not exist at the time this