美文网首页
OC:文件的读写、复制、移动和删除

OC:文件的读写、复制、移动和删除

作者: 春暖花已开 | 来源:发表于2018-11-24 10:17 被阅读13次

NSDocumentDirectory与NSDocumentationDirectory 的区别:

NSDocumentDirectory是指程序中对应的Documents路径,而NSDocumentionDirectory对应于程序中的Library/Documentation路径,这个路径是没有读写权限的,所以看不到文件生成。

获取写入路径:

- (NSString *)documentsDirectory {
    
    NSString *documentsDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
    return documentsDirectory;
}

写入一
- (IBAction)write:(id)sender {
    
    NSString *txt = @"This is a book";
    NSString *filePath = [[self documentsDirectory] stringByAppendingPathComponent:@"MZString.txt"];
    BOOL isSuccess = [txt writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:nil];
    if (isSuccess) {
        NSLog(@"Write Succeed");
    } else {
        NSLog(@"Write Failed");
    }
    
    // 追加写入(不覆盖原先数据)
    NSFileHandle *handle = [NSFileHandle fileHandleForWritingAtPath:filePath];
    [handle seekToEndOfFile]; // 移动到文件的末尾
    [handle writeData:[@"以下为追加写入😄" dataUsingEncoding:NSUTF8StringEncoding]]; // 在文件末尾写入数据
    [handle closeFile]; // 关闭
    
    NSLog(@"%@", filePath);
    
    // 获取文件总长度
    NSFileManager *manager = [NSFileManager defaultManager];
    NSDictionary *dict = [manager attributesOfItemAtPath:filePath error:nil]; // 返回给定路径item的属性
    long long length = [[dict objectForKey:NSFileSize] longLongValue];
    NSLog(@"%lld", length);
}

// 沙盒路径
- (NSString *)documentsDirectory {
    
    NSString *documentsDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
    return documentsDirectory;
}

写入二

- (IBAction)write:(id)sender {
    
    NSLog(@"%@", [self folderPath]);
    
    // 检查缓存是否存在
    NSString *filePath = [[self folderPath] stringByAppendingPathComponent:@"File"];
    id contents = [self getContentsAtPath:filePath];
    if (contents) {
        NSLog(@"😄缓存存在:%@", contents);
        return;
    }
    
    NSString *txt = @"{\"data\":\"This is a book.\"}";
    
    [[NSFileManager defaultManager] createDirectoryAtPath:[self folderPath] withIntermediateDirectories:YES attributes:nil error:nil];
    
    // 写入的速度比较慢
//    [[NSFileManager defaultManager] createFileAtPath:filePath contents:[txt dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
    [txt writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:nil];
}

// 沙盒路径
- (NSString *)documentsDirectory {
    
    NSString *documentsDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
    return documentsDirectory;
}

// 存储路径
- (NSString *)folderPath {
    
    return [[self documentsDirectory] stringByAppendingPathComponent:@"MyCache"];
}

// 检查缓存是否存在
- (id)getContentsAtPath:(NSString *)path {
    
    // 指定路径不存在
    if ([path isKindOfClass:[NSNull class]] || !path || path.length == 0) {
        return nil;
    }
    
    NSData *data = [NSData dataWithContentsOfFile:path];
    if (data) {
        return [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers|NSJSONReadingMutableLeaves error:nil];
    }
    return nil;
}

移动

- (IBAction)move:(id)sender {
    
    NSString *filePath = [[self folderPath] stringByAppendingPathComponent:@"File"];
    NSString *contFilePath = [[self folderPath] stringByAppendingPathComponent:@"newFile"];
    
    NSFileManager *manager = [NSFileManager defaultManager];
    [manager moveItemAtPath:filePath toPath:contFilePath error:nil];
}

复制

- (IBAction)copy:(id)sender {
    
    NSString *filePath = [[self folderPath] stringByAppendingPathComponent:@"newFile"];
    NSString *CopyFilePath = [[self folderPath] stringByAppendingPathComponent:@"CopedFile"];
    
    NSFileManager *manager = [NSFileManager defaultManager];
    [manager copyItemAtPath:filePath toPath:CopyFilePath error:nil];
}

删除

- (IBAction)delete:(id)sender {
    
    NSString *file = [[self folderPath] stringByAppendingPathComponent:@"CopedFile"];
    
    NSFileManager *manager = [NSFileManager defaultManager];
    [manager removeItemAtPath:file error:nil];
}

相关文章

  • OC:文件的读写、复制、移动和删除

    NSDocumentDirectory与NSDocumentationDirectory 的区别: NSDocum...

  • 常用Linux命令

    文件复制 文件远程复制 删除 删除文件 删除非空文件夹 文件移动 移动文件 移动文件夹下的所有 文件远程复制 用户...

  • Ubuntu文件的复制、移动和删除命令

    (转)Ubuntu文件的复制、移动和删除命令 Ubuntu文件的复制、移动和删除命令 先说说cp复制命令 该命令的...

  • 282文件与目录操作(二)文件的移动复制和删除

    一、文件的移动复制和删除 用途:版本更新时,删除(备份)原有文件,复制现在的文件(替换) 1、删除文件 2、复制文...

  • linux如何复制移动文件

    linux如何复制文件夹和移动文件夹 linux下文件的复制、移动与删除命令为:cp,mv,rm 一、文件复制命令...

  • Linux命令(四)

    一:复制(cp)、删除(rm)和移动(mv) 1、cp:复制文件,目录和创建连接文件 ①cp [-a...

  • 测试

    创建、删除、复制、移动、重命名文件和文件夹的命令分别是什么?文件:创建:touch/vim删除:rm复制:cp移动...

  • 测试题

    创建、删除、复制、移动、重命名文件和文件夹的命令分别是什么?文件创建 touch删除 rm复制 cp移动 mv重命...

  • 一些有用的Linux命令和Vim使用总结

    常见Linux命令## 文件复制,移动,删除,创建 复制:cp -v 源文件路径 目标文件路径 移动:mv -v ...

  • npm script工作流(六) 跨平台兼容

    主要内容 文件系统操作(创建、删除、移动、复制):删除文件和目录: rimraf:https://github.c...

网友评论

      本文标题:OC:文件的读写、复制、移动和删除

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