NSFileManager 创建文件失败

陈亨特
NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *filePath;

if (str_FolderName!=nil){
    filePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"/%@/%@",str_FolderName,str_FileName]];
} else {
    filePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"/%@",str_FileName]];
}

NSFileManager *fileManager = [NSFileManager defaultManager];
NSMutableDictionary *data;

if ([fileManager fileExistsAtPath: filePath])
{
    //file is exist
    data = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];

} else {
    BOOL Success = [fileManager createFileAtPath:filePath contents:nil attributes:nil];
    // sometime return YES, sometime return NO <<< this is my question
    if(Success == YES){
        data = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];
    }else{ 
        data = [[NSMutableDictionary alloc] init];            
    }
}

for (uint32_t u32_Cnt=0;u32_Cnt<arr_Keys.count;u32_Cnt++) {
    [data setValue:[NSString stringWithFormat:@"%@",[marr_Data objectAtIndex:u32_Cnt]] forKey:[arr_Keys objectAtIndex:u32_Cnt]];
}

if ([data writeToFile:filePath atomically: YES])
{
    NSLog(@"[Save OK]");

    return DEF_PASS;
} else {
    NSLog(@"[Save Fail]");  <<<<   now happened
}

如果我检查过文件不存在,那么我想创建文件作为文件路径

我的设备有时成功有时失败

文件路径如下:

@"/var/mobile/Containers/Data/Application/xxxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx/Documents/mfolder/myfile"

有人可以帮助我吗?

尼尔马尔辛

我更新了你的一些代码。我为我正确分配了NSFilemanager及其工作。您可能在文件路径或文件管理器对象中遇到问题。

 NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *filePath;

    if (str_FolderName!=nil){
        filePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"/%@/%@",str_FolderName,str_FileName]];
    }else{
        filePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"/%@",str_FileName]];
    }
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSMutableDictionary *data;
    if ([fileManager fileExistsAtPath: filePath])
    {
        //file is exist
        data = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];

    }
    else
    {
        if (str_FolderName!=nil){
            NSString *strDicPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"/%@",str_FolderName]];
            // You need to create director before creating file.
            if (![[NSFileManager defaultManager] fileExistsAtPath:strDicPath])
            {
                NSError *error;
                [[NSFileManager defaultManager] createDirectoryAtPath:strDicPath withIntermediateDirectories:NO attributes:nil error:&error]; //Create folder
            }

        }
        BOOL Success = [fileManager createFileAtPath:filePath contents:nil attributes:nil];
        // sometime return YES, sometime return NO <<< this is my question
        if(Success == YES){
            data = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];
        }else{ 
            data = [[NSMutableDictionary alloc] init];            
        }
    }

我还在模拟器和设备中检查了这段代码。

将字符串写入文件:

NSError *error;
NSString *stringToWrite = @"1\n2\n3\n4";
[stringToWrite writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:&error];

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我不能使用NSFileManager创建文件

来自分类Dev

NSFileManager -createFileAtPath失败,并显示NSInvalidArgumentException

来自分类Dev

使用NSFileManager获取文件大小

来自分类Dev

如何使用Swift代码(NSFileManager)创建目录

来自分类Dev

NSFileManager:无法在某些设备上创建目录

来自分类Dev

NSFileManager:无法在某些设备上创建目录

来自分类Dev

如何通过NSFileManager知道文件正在写入

来自分类Dev

无法使用NSFileManager查找文件

来自分类Dev

NSFileManager-创建一个只读文件

来自分类Dev

复制时如何使用[NSFileManager defaultManager]覆盖文件夹?

来自分类Dev

使用NSFileManager在复制文件期间更新进度栏

来自分类Dev

如何使用NSFileManager保护或加密视频文件?

来自分类Dev

从 mkdir() 创建文件失败

来自分类Dev

在bash中创建文件列表失败

来自分类Dev

使用NSFileManager合并文件夹,仅覆盖现有文件

来自分类Dev

在Swift中使用NSFileManager删除文件时无法获得完成结果

来自分类Dev

路径正确时,为什么NSFIleManager -fileExistsAtPath无法找到现有文件?

来自分类Dev

NSFileManager-fileExistsAtPath :?

来自分类Dev

NSFileManager> attributesOfItemAtPath>图像尺寸

来自分类Dev

JXA NSFileManager createDirectoryAtPathWithIntermediateDirectoriesAttributesError异常

来自分类Dev

NSFileManager-fileExistsAtPath :?

来自分类Dev

JXA NSFileManager createDirectoryAtPathWithIntermediateDirectoriesAttributesError异常

来自分类Dev

Spark CSV IOException Mkdirs创建文件失败

来自分类Dev

root 时创建文件夹失败

来自分类Dev

NSFileManager导致SourceKit服务终止

来自分类Dev

NSFileManager ubiquityIdentityToken意外返回nil?

来自分类Dev

NSFileManager不会从NSFileExtendedAttributes读取kMDItemWhereFroms

来自分类Dev

多个URL的NSFileManager Swift数组

来自分类Dev

通过NSFileManager获取元数据

Related 相关文章

  1. 1

    为什么我不能使用NSFileManager创建文件

  2. 2

    NSFileManager -createFileAtPath失败,并显示NSInvalidArgumentException

  3. 3

    使用NSFileManager获取文件大小

  4. 4

    如何使用Swift代码(NSFileManager)创建目录

  5. 5

    NSFileManager:无法在某些设备上创建目录

  6. 6

    NSFileManager:无法在某些设备上创建目录

  7. 7

    如何通过NSFileManager知道文件正在写入

  8. 8

    无法使用NSFileManager查找文件

  9. 9

    NSFileManager-创建一个只读文件

  10. 10

    复制时如何使用[NSFileManager defaultManager]覆盖文件夹?

  11. 11

    使用NSFileManager在复制文件期间更新进度栏

  12. 12

    如何使用NSFileManager保护或加密视频文件?

  13. 13

    从 mkdir() 创建文件失败

  14. 14

    在bash中创建文件列表失败

  15. 15

    使用NSFileManager合并文件夹,仅覆盖现有文件

  16. 16

    在Swift中使用NSFileManager删除文件时无法获得完成结果

  17. 17

    路径正确时,为什么NSFIleManager -fileExistsAtPath无法找到现有文件?

  18. 18

    NSFileManager-fileExistsAtPath :?

  19. 19

    NSFileManager> attributesOfItemAtPath>图像尺寸

  20. 20

    JXA NSFileManager createDirectoryAtPathWithIntermediateDirectoriesAttributesError异常

  21. 21

    NSFileManager-fileExistsAtPath :?

  22. 22

    JXA NSFileManager createDirectoryAtPathWithIntermediateDirectoriesAttributesError异常

  23. 23

    Spark CSV IOException Mkdirs创建文件失败

  24. 24

    root 时创建文件夹失败

  25. 25

    NSFileManager导致SourceKit服务终止

  26. 26

    NSFileManager ubiquityIdentityToken意外返回nil?

  27. 27

    NSFileManager不会从NSFileExtendedAttributes读取kMDItemWhereFroms

  28. 28

    多个URL的NSFileManager Swift数组

  29. 29

    通过NSFileManager获取元数据

热门标签

归档