zoukankan      html  css  js  c++  java
  • iOS

    1. 沙盒 & NSData

    /*_______________________________获取沙盒路径_________________________________________*/

    //第一种获取方式

            //NSHomeDirectory();获取到沙盒的目录路径

            NSString *homePath = NSHomeDirectory();

            NSLog(@"沙盒目录:%@",homePath);

            

            NSString *docPath1 = [NSString stringWithFormat:@"%@/Documents",homePath];

            NSString *docPath2 = [homePath stringByAppendingString:@"/Documents"];

            

            NSLog(@" docPath1:%@, docPath2:%@",docPath1,docPath2);

            

            //第二种获取方式.

            /*

             NSDocumentDicrectory: Documents文件夹

             NSLibraryDirectory  : Library文件夹

             */

            /*

            NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

            NSLog(@"array:%@",array);

    2. 沙盒 & NSData & NSFileManager

    (NSFileManager:文件的创建、复制、删除、前切文件(注意:操作对象为文件,而不是文件内容)。)

            //演示路径

            NSString *path = @"/Users/apple/file.text";

            

            //1.返回路径的组成部分

            NSArray *array = [path pathComponents];

            NSLog(@"pathComponents:%@",array);

            

            //2.路径的最后组成部分

            NSString *lastPathComponent = [path lastPathComponent];

            NSLog(@"lastComponent:%@",lastPathComponent);

            

            //3.追加子路径

            NSString *newPath1 = [path lastPathComponent];

            NSLog(@"newPath1=%@",newPath1);

            

            NSString *newPath2 = [path stringByAppendingPathComponent:@"/appFile.text"];

            NSLog(@"newPath2:%@",newPath2);

            

            //4.删除最后的组成部分

            NSString *deleteLast = [path stringByDeletingLastPathComponent];

            NSLog(@"deleteLast:%@",deleteLast);

            

            //5.删除扩展名

            NSString *deleteExtension = [path stringByDeletingPathExtension];

            NSLog(@"deleteExtension:%@",deleteExtension);

            

            //6.获取路径最后组成部分的扩展名

            NSString *extension =[path pathExtension];

            NSLog(@"extension:%@",extension);

            

            //7.追加扩展名

            NSString *appendExt = [path stringByAppendingPathExtension:@"jpg"];

            NSLog(@"appendExt:%@",appendExt);

            

            

            //NSString->NSData

            NSString *s = @"tsdfsdfsdfsdf";

            NSData *data = [s dataUsingEncoding:NSUTF8StringEncoding];

            

            //NSData->NSString

            NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

            NSLog(@"str:%@",str);

            

            //NSMutableData 可变的Data对象,可以追加数据

    3. 沙盒 & NSData & NSFileManager

    (NSFileManger:文件的创建、复制、删除、剪切文件(注意:操作对象为文件,而不是文件内容))

            

    /*___________________________________1.创建文件_____________________________________*/

            /*

            //获取当前app的沙盒目录

            NSString *homePath = NSHomeDirectory();

            

            //追加子路径

            NSString *filePath = [homePath stringByAppendingPathComponent:@"Documents/file.text"];

            //NSFileManager不能使用alloc创建,这个类设计为单例

            NSFileManager *fileManager1 = [NSFileManager defaultManager];

            NSFileManager *fileManager2 = [NSFileManager defaultManager];

            NSLog(@"f1=%p,f2=%p",fileManager1,fileManager2);  //观察地址,发现相同

            

            //NSFileManager只能通过类方法defaultManager创建

            NSFileManager *fileManager = [NSFileManager defaultManager];

            NSString *string = @"自动化测试部";

            //将NSString 转化为 NSData对象.

            NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];

            

            //根据路径filePath创建对应的文件,注意:只能创建文件,不能创建目录(文件夹).

            BOOL success = [fileManager createFileAtPath:filePath contents:data attributes:nil];

            if (success) {

                NSLog(@"文件创建成功");

            }else {

                NSLog(@"文件创建失败");

            }

            

            //创建文件夹

            NSString *filePath2 = [homePath stringByAppendingPathComponent:@"Documents/demo"];

            NSError *error;

            

            BOOL success2 = [fileManager createDirectoryAtPath:filePath2 withIntermediateDirectories:YES attributes:nil error:&error];

            if (!success2) {

                NSLog(@"创建失败:%@",error);

            }

            */

            

    /*___________________________________2.读取文件_____________________________________*/

            

            /*

            //获取当前app的沙盒根目录

            NSString *homePath = NSHomeDirectory();

            

            //追加子路径

            NSString *filePath = [homePath stringByAppendingPathComponent:@"Documents/file.text"];

            

            NSFileManager *fileManager = [NSFileManager defaultManager];

            

            //根据路径读取文件中的数据

            NSData *data = [fileManager contentsAtPath:filePath];

            

            //NSData 转 NSString

            NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

            NSLog(@"%@",string);

            */

    /*___________________________________3.移动(前切)文件_____________________________________*/

            

            /*

            //获取当前app的沙盒根目录

            NSString *homePath = NSHomeDirectory();

            

            //源路径

            NSString *filePath = [homePath stringByAppendingPathComponent:@"Documents/file.text"];

            

            //目标路径

            NSString *targetPath = [homePath stringByAppendingPathComponent:@"Documents/demo/file2.text"];

            

            NSFileManager *fileManager = [NSFileManager defaultManager];

            BOOL success = [fileManager moveItemAtPath:filePath toPath:targetPath error:nil];

            if (!success) {

                NSLog(@"移动失败");

            }

            //一个思考:怎么实现给移动至此的文件改名字?? Method:通过剪切,文件从当前目录移动至当前目录

            */

    /*___________________________________4.复制文件_____________________________________*/

            

            /*

            //获取当前app的沙盒目录

            NSString *hoemPath = NSHomeDirectory();

            

            //源路径

            NSString *filePath = [hoemPath stringByAppendingPathComponent:@"Documents/demo/file3.text"];

            

            //目标路径

            NSString *targetPath = [hoemPath stringByAppendingPathComponent:@"Documents/file.text"];

            NSFileManager *fileManager = [NSFileManager defaultManager];

            

            BOOL success = [fileManager copyItemAtPath:filePath toPath:targetPath error:nil];

            if (!success) {

                

                NSLog(@"复制失败");

            }

             */

            

    /*___________________________________3.删除文件_____________________________________*/

            

            /*

            //获取当前app的沙盒目录

            NSString *hoemPath = NSHomeDirectory();

            //源路径

            NSString *filePath = [hoemPath stringByAppendingPathComponent:@"Documents/demo/file3.text"];

            NSFileManager *fileManager = [NSFileManager defaultManager];

            //判断文件是否存在

            BOOL fileExist = [fileManager fileExistsAtPath:filePath];

            

            if (fileExist) {

                //removeItemAtPath:删除文件.

                BOOL success = [fileManager removeItemAtPath:filePath error:nil];

                if (success) {

                    NSLog(@"删除成功");

                }

             */

            

            

    /*___________________________________4.获取文件的属性_____________________________________*/

            

            NSFileManager *fileManager = [NSFileManager defaultManager];

            NSString *homePath = NSHomeDirectory();

            

            //目标路径

            NSString *filePath = [homePath stringByAppendingPathComponent:@"Documents/file.text"];

            

            //获取到文件的属性

            NSDictionary *fileAttr = [fileManager attributesOfItemAtPath:filePath error:nil];

            NSLog(@"%@",fileAttr);

            

            NSNumber *fileSize = [fileAttr objectForKey:NSFileSize];

            long sizeValue = [fileSize longValue];

            NSLog(@"文件大小:%ld",sizeValue);

            

            //如下读取文件的大小不可取,因为将文件中的数据全都读到内存中,文件大时,太占内存了。

            //NSData *data = [fileManager contentsAtPath:filePath];

            //NSInteger len = data.length;

    4. 读写文件 & NSFileHandle -文件内容操作

    (Attention:NSFileHandle区别NSFileManager(主要对目录操作),NSFileHandle(主要对文件内容操作))

            

    /*_______________________________NSString读、写文件__________________________________________*/

            

            /*

            //1.NSString写文件

            NSString *s = @"自动化测试部门";

            

            //文件路径

            NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/filetext"];

            

            //将字符串写入文件

            BOOL success = [s writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];

            

            if (success) {

                NSLog(@"字符串写入成功");

            }

            //2.NSString读文件

            //创建字符串时同时读取文件路径对应的文件中的内容

            NSString *string = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

            NSLog(@"string=%@",string);

            */

            

    /*_______________________________NSData读、写文件__________________________________________*/

            /*

            //1.NSData读文件

            //文件路径

            NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/file.text"];

            

            //创建NSData时,同时读取文件中的内容

            NSData *data = [[NSData alloc] initWithContentsOfFile:path];

            

            NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

            NSLog(@"%@",string);

            

            //2.NSData写文件

            //[data writeToFile:<#(nonnull NSString *)#> atomically:<#(BOOL)#>]

            */

            

            /*

             注意:NSArray、NSDictionary 中只能存放NSNumber、NSString、NSData、NSDate、NSArray、NSDictionary

             才能成功写入文件、写入文件我们成之为“属性列表文件”

             

             */

            

    /*_______________________________NSArray读、写文件__________________________________________*/

            

            //1.NSArray写文件

            /*

            NSString *s1 = @"zhangsan";

            NSString *s2 = @"李四";

            //文件路径

            NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/array.plist"];

            NSLog(@"path:%@",path);

            NSArray *array = [[NSArray alloc] initWithObjects:s1,s2, nil];

            

            BOOL success = [array writeToFile:path atomically:YES];

            

            if (success) {

                

                NSLog(@"写入成功");

            }

             */

            

            

            //数组、字典存入能存入NSNumber、NSData、NSDate、NSArray、NSDictionary以外的对象,则无法写入文件

            /*

            Person *p = [[Person alloc] init];

            NSArray *array2 = [NSArray arrayWithObjects:p,@"demo", nil];

            NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/array2.plist"];

            

            BOOL success2 = [array2 writeToFile:path atomically:YES];

            

            if (!success2) {

                NSLog(@"写入失败");

            }

             */

            

            /*

            //2.NSArray读文件

            NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/array.plist"];

    //        NSString *path1 = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Property List.plist"];

            NSArray *readArray = [[NSArray alloc] initWithContentsOfFile:path];

            

            for (NSString *s in readArray) {

                NSLog(@"s = %@",s);

            }

            */

            

            

    /*_______________________________NSDictionary读、写文件__________________________________________*/

            

            //1.NSDictionary写入文件

            NSDictionary *dic = @{

                                    @"name":@"jack",

                                    @"birthday":[NSDate date],

                                    @"age":@22

                                  };

            NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/dic.plist"];

            BOOL success = [dic writeToFile:path atomically:YES];

            

            if (success) {

                NSLog(@"写入成功");

            }

            

            //2.NSDictionary读文件

            NSDictionary *readDic = [NSDictionary dictionaryWithContentsOfFile:path];

            NSLog(@"readDic:%@",readDic);

            

    5. 追加数据与定位读取

    /*_____________________________________1.追加数据_____________________________________*/

            

            /*

            NSString *s = @"MLB-AE-SW";

            

            //当前登陆用户的主目录

            NSString *homePath = NSHomeDirectory();

            NSString *path = [homePath stringByAppendingPathComponent:@"file.text"];

            

            //写入文件

            [s writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];

            */

            

            /*

            NSString *homePath = NSHomeDirectory();

            

            NSString *path = [homePath stringByAppendingPathComponent:@"file.text"];

            

            //创建一个写入的NSFileHandle对象

            NSFileHandle *writeHandle = [NSFileHandle fileHandleForWritingAtPath:path];

            

            //将文件的偏移量设置到末尾,写入文件时则从末尾开始写入

            [writeHandle seekToEndOfFile];

            

            NSString *appendString = @"追加的数据";

            NSData *data = [appendString dataUsingEncoding:NSUTF8StringEncoding];

            

            //从当前偏移量开始写入数据

            [writeHandle writeData:data];

            

            //关闭文件

            [writeHandle closeFile];

             */

            

    /*_____________________________________2.定位读取_____________________________________*/

            

            //当前登陆用户主目录

            NSString *homePath = NSHomeDirectory();

            NSString *path = [homePath stringByAppendingPathComponent:@"Documents/file.text"];

            

            //通过NSFileManager获取文件大小

            NSFileManager *fileManager = [NSFileManager defaultManager];

            NSDictionary *fileAttr = [fileManager attributesOfItemAtPath:path error:nil];

            NSNumber *fileSize = [fileAttr objectForKey:NSFileSize];

            long long sizeValue = [fileSize longLongValue];

            

            NSFileHandle *readHandle = [NSFileHandle fileHandleForReadingAtPath:path];

            //将偏移量设置到中间位置

            [readHandle seekToFileOffset:sizeValue/2];

            

            //从当前偏移量读取到文件的末尾

            NSData *data = [readHandle readDataToEndOfFile];

            

            //NSData ---> NSString

            NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

            

            NSLog(@"%@",string);

    6. NSFileHandle实现复制文件的功能

            NSString *homePath = NSHomeDirectory();

            NSString *srcPath = [homePath stringByAppendingPathComponent:@"06 第六课 文件管理.pdf"];

            

            //目标文件路径

            NSString *targetPath = [homePath stringByAppendingPathComponent:@"Documents/06 第六课 文件管理.pdf"];

            

            

            /*

             注意:使用NSFileHandle只能读写译经存在的文件,不能创建文件

                 使用NSFileManager创建文件

             */

            NSFileManager *fileManager = [NSFileManager defaultManager];

            //创建目标文件

            BOOL success = [fileManager createFileAtPath:targetPath contents:nil attributes:nil];

            

            if (success) {

                

                NSLog(@"目标文件创建成功!");

            }

            

            //创建用于读取文件的NSFileHandle对象

            NSFileHandle *readHandle = [NSFileHandle fileHandleForReadingAtPath:srcPath];

            

            //创建用于写入的NSFileHandle对象

            NSFileHandle *writerHande = [NSFileHandle fileHandleForWritingAtPath:targetPath];

            

            

            //从当前偏移量读到文件的末尾,偏移量默认是起始位置

            //NSData *data = [readHandle readDataToEndOfFile];

            //同上

            NSData *data = [readHandle availableData];  //缺陷:每次读取文件全部内容(当文件很大时,程序就会crash)

                                                        //解决方式:一次读几个字节,一段一段的读.

            

            

            //将数据写入目标文件

            [writerHande writeData:data];

            

            //关闭文件

            [readHandle closeFile];

            [writerHande closeFile];

    喜欢请赞赏一下啦^_^

    微信赞赏

    支付宝赞赏

  • 相关阅读:
    C# SocketUdpServer
    C# HttpHelper
    控制台禁止操作
    Modbus Com SerialPort
    postgresql 备份与恢复
    Firebird 表字段查询
    Postgresql 连接更新
    第 1 章 计算机组成与体系结构 1.1计算机系统组成
    系统架构设计师教程(第4版)
    阿里十年架构师用一张图告诉你什么是系统架构师
  • 原文地址:https://www.cnblogs.com/share-iOS/p/5816419.html
Copyright © 2011-2022 走看看