zoukankan      html  css  js  c++  java
  • 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");
        }
    }
  • 相关阅读:
    每日总结
    体温登记app(大年初一要收的作业)慢慢更,这个写完了
    2021/01/31周学习总结
    2021/01/24周学习总结
    从小工到专家
    构建之法阅读笔记
    2021/01/17周学习总结
    人月神话阅读笔记
    利用Word制作Kindle用的6寸PDF电纸书
    面试题-谈谈封装和抽象的区别(转)
  • 原文地址:https://www.cnblogs.com/acBool/p/5746090.html
Copyright © 2011-2022 走看看