ios文件写入不起作用

Posted

技术标签:

【中文标题】ios文件写入不起作用【英文标题】:ios file write is not working 【发布时间】:2016-04-08 13:42:19 【问题描述】:

我想在文件中写入一个简单的数据,但它不起作用。

- (void)writeStringToFile:(NSString*)aString 

    // Build the path, and create if needed.
    NSString* filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString* fileName = @"bookmark.json";
    NSString* fileAtPath = [filePath stringByAppendingPathComponent:fileName];
    NSLog(@"%@",fileAtPath);
    if (![[NSFileManager defaultManager] fileExistsAtPath:fileAtPath]) 
        [[NSFileManager defaultManager] createFileAtPath:fileAtPath contents:nil attributes:nil];
    

    // The main act...
    [[aString dataUsingEncoding:NSUTF8StringEncoding] writeToFile:fileAtPath atomically:YES];

【问题讨论】:

你怎么知道它不起作用? 您的代码在我看来不错,但是没有错误报告。使用[NSData writeToFile:options:error:] 并检查返回码并记录错误对象。 为什么你有那个if 声明,你为什么打电话给createFileAtPath?你也不需要。只需致电writeToFile:options:error: hi没有找到任何文件名bookmark.json 【参考方案1】:

您仍然可以修改应用程序的文档目录。

检查文件是否存在于路径中

 NSFileManager *fileManager = [NSFileManager defaultManager];
 //Get documents directory
 NSArray *directoryPaths = NSSearchPathForDirectoriesInDomains
 (NSDocumentDirectory, NSUserDomainMask, YES);
 NSString *documentsDirectoryPath = [directoryPaths objectAtIndex:0];
 if ([fileManager fileExistsAtPath:@""]==YES) 
     NSLog(@"File exists");
     

检查是否可写、可读和可执行

if ([fileManager isWritableFileAtPath:@"FilePath"]) 
    NSLog(@"isWritable");
 
 if ([fileManager isReadableFileAtPath:@"FilePath"]) 
    NSLog(@"isReadable");
 
 if ( [fileManager isExecutableFileAtPath:@"FilePath"])
    NSLog(@"is Executable");
 

试试这个 Link

快乐编码 (^_^)

【讨论】:

【参考方案2】:

试试这样......

  - (void)writeStringToFile:(NSString*)aString 

// Build the path, and create if needed.
NSString* filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString* fileName = @"bookmark.json";
NSString* fileAtPath = [filePath stringByAppendingPathComponent:fileName];
NSLog(@"%@",fileAtPath);
if (![[NSFileManager defaultManager] fileExistsAtPath:fileAtPath]) 
    // The main act...
[[aString dataUsingEncoding:NSUTF8StringEncoding] writeToFile:fileAtPath atomically:YES];

【讨论】:

所以如果文件存在就不写字符串?它不会检测和报告错误。更糟糕的是 OPs 代码。 可以使用 [NSData writeToFile:options:error:] 代替...! 是的,我知道。但是,我正在评论您的代码实际演示的内容。

以上是关于ios文件写入不起作用的主要内容,如果未能解决你的问题,请参考以下文章

php从网站写入文件不起作用

调用打开文件对话框后文件写入不起作用

在 PHP 中写入文本文件时换行不起作用

波形写入功能不起作用,我做错了啥?

AVAudioFile 写入不起作用 Swift iOS 14

从文件中读取大内容并将该内容写入新文件