黑马程序员___Foundation__NSFileManager和NSFileHandle
//NSFileManager
#import <Foundation/Foundation.h> #define PATH @"/Users/fengze/Desktop" int main(int argc, const char * argv[]) { @autoreleasepool { //创建 file manager对象 NSFileManager *fm = [NSFileManager defaultManager]; //查看指定文件路径并返回一个数组,数组储存文件和文件夹的目录 NSArray *array = [fm contentsOfDirectoryAtPath:PATH error:nil]; // 上述方法只是浅度遍历,不能遍历文件夹里面的内容 //深度遍历 array = [fm subpathsOfDirectoryAtPath:PATH error:nil]; // 可以遍历当前文件夹里面所有内容 // 创建目录 [fm createDirectoryAtPath:[NSString stringWithFormat:@"%@/练习",PATH] withIntermediateDirectories:NO attributes:nil error:nil]; // 上述意思是在PATH目录下创建一个dir文件 //创建文件 [fm createFileAtPath:[NSString stringWithFormat:@"%@dir",PATH] contents:[@"hello" dataUsingEncoding:NSUTF8StringEncoding] attributes:nil]; //在dir文件夹里面创建了hello的文件,但是创建的是一个什么拓展名单文件? // // //文件的删除 // [fm removeItemAtPath:[NSString stringWithFormat:@"%@/dir",PATH] error:nil]; //会把目录下的所有内容删除 //文件的拷贝 [fm copyItemAtPath:[NSString stringWithFormat:@"%@/dir",PATH] toPath:[NSString stringWithFormat:@"%@/dir2",PATH] error:nil]; //文件的移动 [fm moveItemAtPath:[NSString stringWithFormat:@"%@/dir",PATH] toPath:[NSString stringWithFormat:@"%@/dir2",PATH] error:nil]; /* 文件的删除,文件的拷贝,文件的移动都是既可以用在文件上面,也可以用在文件夹上面 */ } return 0; }
NSHandle
#import <Foundation/Foundation.h> //NShandle称为文件句柄 int main(int argc, const char * argv[]) { @autoreleasepool { //以只读的的方式打开文件生成文件句柄 NSFileHandle *fh = [NSFileHandle fileHandleForReadingAtPath:@"/Users/fengze/Desktop/test/"]; /* 文件从硬盘到内存叫做读,从内存到到硬盘叫做写,内存相当于大脑,硬盘相当于课本 */ //根据指定的范围读取文件内容 NSData *data = [fh readDataOfLength:3]; data = [fh readDataOfLength:5]; //第二次读取的内容会接着上次读取的内容继续往下读 //一次性读取文件的所有内容 NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; //以只写的方式打开文件生成文件句柄 NSFileHandle *fh2 = [NSFileHandle fileHandleForWritingAtPath:@"/Users/fengze/Desktop/test"]; [fh2 writeData:[@"hello" dataUsingEncoding:NSUTF8StringEncoding]]; //写入的内容会替换掉文件的前面的内容,后面的内容不变 // [fh2 truncateFileAtOffset:0]; //将文件内容截断值0字节(清空) //将读写指针设到文件的末尾 [fh seekToEndOfFile]; //在文件的末尾追加内容 [fh2 writeData:[@"xxx" dataUsingEncoding:NSUTF8StringEncoding]]; } return 0; }