OC基础—文件管理者

作者: Mg明明就是你 | 来源:发表于2016-08-06 21:03 被阅读114次
    • iOS中NSFileManager文件常用操作整合

    • 前言:"在Objective-C的编程过程当中,常常会涉及到对文件的一些操作,OC也提供了专业的类来进行文件操作,那就是NSFileManager类。通过NSFileManager类我们可以对文件进行创建、删除、移动等操作。"

    1.NSFileManager

    // 获取电脑桌面的路径(下面是本机路径)
     NSString *desktopPath = @"/Users/hcios/Desktop";
     // 在桌面路径后拼上想要创建的目录名(如:test)
     NSString *directoryPath = [desktopPath stringByAppendingPathComponent:@"test"];
     
     // 创建一个默认的fileManager
     NSFileManager *fileManager = [NSFileManager defaultManager];
     
     // fileManager在filePath路径上创建一个目录
     BOOL b = [fileManager createDirectoryAtPath:directoryPath withIntermediateDirectories:YES attributes:nil error:nil];
     NSLog(@"%@", b ? @"创建成功" : @"创建失败");
     
     // 创建两个文件路径
     NSString *filePath1 = [directoryPath stringByAppendingPathComponent:@"test1.txt"];
     NSString *filePath2 = [directoryPath stringByAppendingPathComponent:@"test2.txt"];
     
     // 创建一个字符串,转成NSData *类型,写入文件
     NSString *contents = @"write something to file...";
     NSData *data = [contents dataUsingEncoding:NSUTF8StringEncoding];
     
     // 判断该路径文件是否存在
     if (![fileManager fileExistsAtPath:filePath1]) {
     // 文件不存在则创建文件,创建的同时写入data
     [fileManager createFileAtPath:filePath1 contents:data attributes:nil];
     }
     if (![fileManager fileExistsAtPath:filePath2]) {
     [fileManager createFileAtPath:filePath2 contents:data attributes:nil];
     }
     
     // 两种方式获取一个目录中的所有文件名(有时会获取到隐藏文件)
     NSArray *fileArray = [fileManager subpathsAtPath:directoryPath];
     fileArray = [fileManager subpathsOfDirectoryAtPath:directoryPath error:nil];
     NSLog(@"fileArray = %@", fileArray);
     
     // 将directoryPath改为当前路径,fileManager会默认在当前路径下操作
     [fileManager changeCurrentDirectoryPath:directoryPath];
     NSString *filePath3 = @"CurrentDirectoryPath.txt";
     if (![fileManager fileExistsAtPath:filePath3]) {
     [fileManager createFileAtPath:filePath3 contents:data attributes:nil];
     }
     fileArray = [fileManager subpathsAtPath:directoryPath];
     NSLog(@"fileArray = %@", fileArray);
     
     // 删除文件
     [fileManager removeItemAtPath:filePath3 error:nil];
     fileArray = [fileManager subpathsAtPath:directoryPath];
     NSLog(@"after remove,fileArray = %@", fileArray);
     
     // 在当前目录下创建一个子目录sub
     [fileManager createDirectoryAtPath:@"sub" withIntermediateDirectories:YES attributes:nil error:nil];
     fileArray = [fileManager subpathsAtPath:directoryPath];
     NSLog(@"add a sub directory,fileArray = %@", fileArray);
     
     // 将test2.txt移动到sub目录中去
     [fileManager moveItemAtPath:filePath2 toPath:[@"sub" stringByAppendingPathComponent:@"test2.txt"] error:nil];
     fileArray = [fileManager subpathsAtPath:directoryPath];
     NSLog(@"after move,fileArray = %@", fileArray);
     
     
     // 将test1.txt复制一份到sub目录中去
     [fileManager copyItemAtPath:filePath1 toPath:[@"sub" stringByAppendingPathComponent:@"test1.txt"] error:nil];
     fileArray = [fileManager subpathsAtPath:directoryPath];
     NSLog(@"after copy,fileArray = %@", fileArray);
     
     // 读取文件中的内容,并将NSData *型数据转成NSString *型数据
     NSData *getData = [fileManager contentsAtPath:filePath1];
     NSString *getString = [[NSString alloc] initWithData:getData encoding:NSUTF8StringEncoding];
     NSLog(@"getString = %@", getString);```
    
    ![图片](http:https://img.haomeiwen.com/i1429890/cbf2f30e82f976ca.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    ***
    
    #2.NSBundle
    >NSBundle 类,直接继承 NSObject 类。 这个类的对象,代表了 app 中代码和资源的文件在文件系统里所在的位置,通俗的说,就是定位了程序使用的资源(代码,图形,音乐等数据)在文件系统里的位置,并可以动态的加载、或卸载掉可执行代码。
    bundle在英文中的解释是“捆、束”的意思,那么我们可以将NSBundle理解为是将程序的所有资源捆在一起的对象,我们的程序是一个bundle。 在Finder中,一个应用程序看上去和其他文件没有什么区别。但是实际上它是一个包含了nib文件,编译代码,以及其他资源的目录. 我们把这个目录叫做程序的main bundle,在 Xcode 里,使用应用程序、框架、或者插件的时候,Xcode 会生成对应的资源的目录包。
    对于有GUI的应用程序来说,我们可以通过NSBundle来获取资源的路径,但是对于没有GUI的程序(比如OS X的控制台程序),就不能通过NSBundle来获取资源的路径。
    + (NSBundle *)mainBundle;
    上面的mainBundle方法返回一个 NSBundle类的对象,这个对象就是一个绝对路径,这个路径保存的是当前可执行的应用程序根目录路径,应用程序在编译之后, 资源文件就直接复制到了根目录下。然后我们根据资源文件的名称和类型就可以获取到它们,例如下面获取一张图片:
    

    // 获取应用程序的main bundle
    NSBundle *mainBundle = [NSBundle mainBundle];
    // 获取图片的路径(图片为test.jpg)
    NSString *imagePath = [mainBundle pathForResource:@"test" ofType:@"jpg"];
    // 根据图片的路径获取图片
    UIImage *image = [UIImage imageWithContentsOfFile:imagePath];
    // 将图片放入imageView中
    self.imageView.image = image;

    ***
    
    # 3.NSURL
    

    // 将网络上一张图片的url用字符串格式保存
    NSString *URLString = @"http://7xow65.com1.z0.glb.clouddn.com/wp-content/uploads/2016/03/cefc1e178a82b901adddeaae738da9773912ef3f.jpg";
    // 将字符串格式的url转换成OC中 NSURL *类型的对象
    NSURL *url=[NSURL URLWithString:URLString];
    // 获取url地址中的图片,保存为NSData *类型的对象
    NSData *data = [NSData dataWithContentsOfURL:url];
    // 将data转换为UIImage *类型的对象并放入imageView中
    self.imageView.image = [UIImage imageWithData:data];

    // 获取url中各种参数
    NSLog(@"Scheme: %@", [url scheme]);
    NSLog(@"Host: %@", [url host]);
    NSLog(@"Port: %@", [url port]);
    NSLog(@"Path: %@", [url path]);
    NSLog(@"Relative path: %@", [url relativePath]);
    NSLog(@"Path components as array: %@", [url pathComponents]);
    NSLog(@"Parameter string: %@", [url parameterString]);
    NSLog(@"Query: %@", [url query]);
    NSLog(@"Fragment: %@", [url fragment]);
    NSLog(@"User: %@", [url user]);
    NSLog(@"Password: %@", [url password]);```


    图片
    • github

    | 项目 | 简介 |
    | : | : |
    | MGDS_Swif | 逗视视频直播 |
    | MGMiaoBo | 喵播视频直播 |
    | MGDYZB | 斗鱼视频直播 |
    | MGDemo | n多小功能合集 |
    | MGBaisi | 高度仿写百思 |
    | MGSinaWeibo | 高度仿写Sina |
    | MGLoveFreshBeen | 一款电商App |
    | MGWeChat | 小部分实现微信功能 |
    | MGTrasitionPractice | 自定义转场练习 |
    | DBFMDemo | 豆瓣电台 |
    | MGPlayer | 一个播放视频的Demo |
    | MGCollectionView | 环形图片排布以及花瓣形排布 |
    | MGPuBuLiuDemo | 瀑布流--商品展 |
    | MGSlideViewDemo | 一个简单点的侧滑效果,仿QQ侧滑 |
    | MyResume | 一个展示自己个人简历的Demo |
    | GoodBookDemo | 好书 |

    Snip20161026_15.png
    Snip20161026_16.png
    Snip20161026_35.png 逗视介绍1.gif
    逗视介绍2.gif

    相关文章

      网友评论

        本文标题:OC基础—文件管理者

        本文链接:https://www.haomeiwen.com/subject/nmoksttx.html